Java数组中的最大维数

Ada*_*dam 22 java multidimensional-array

出于好奇,你可以在Java中拥有多少个数组维度?

ken*_*ytm 40

Java 语言不限制维度数,但Java VM规范将维度数限制为255.

例如,以下代码将无法编译:

class Main {
    public static void main(String[] args) {
        final int[][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][]
                 [][][][][][][][][][][][][][][][] x;
    }
}
Run Code Online (Sandbox Code Playgroud)

有错误:

1.java:18: error: array type has too many dimensions
                 [][][][][][][][][][][][][][][][] x;
                                                  ^
1 error
Run Code Online (Sandbox Code Playgroud)

(参考:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1 "数组类型描述符仅在其表示255或更少维度时才有效. ")

  • 我迫不及待地想利用java.util.BigArray来获得n维数组."对于任何人来说,255个尺寸都应该足够了." 确实. (4认同)
  • 换句话说,如果你需要超过255(ha!),你必须使外部的只是对象的数组,然后在低于256时将它们转换为实际的类型. (2认同)