2010-10-30 61 views

回答

34

Java的语言不限制维数,但Java VM 规范限制的维数到255

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

class Main { 
    public static void main(String[] args) { 
     final int[][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] 
       [][][][][][][][][][][][][][][][] x; 
    } 
} 

,错误:

1.java:18: error: array type has too many dimensions 
       [][][][][][][][][][][][][][][][] x; 
               ^
1 error 

(参考文献:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1“的数组类型描述符仅是有效的,如果它代表255米或更少的尺寸。”)

+2

换句话说,如果你需要超过255(ha!),你将不得不将外部数组作为对象数组,然后在你得到256以下时将它们转换为实际类型。 – Gabe 2010-10-30 21:00:26

+0

这很有趣 - 我没有'不知道。一方面,我想知道为什么有人会想要使用这种维度的数组,另一方面,我想知道为什么他们会这样限制它。 – Cam 2010-10-30 21:00:59

+1

@Cam 255适合8位。 – kennytm 2010-10-30 21:02:20

0

小实验显示,255个尺寸是最大的。 256导致编译错误;

The screenshot

+5

这个答案在2010年已经提供:-) – Carpetsmoker 2016-12-06 22:41:32