2010-10-30 17 views

Odpowiedz

34

Java język nie ogranicza liczbę wymiarów, ale Java VM Spec ogranicza liczbę wymiarów do 255.

Na przykład, poniższy kod nie powiedzie się skompilować:

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

z błędem:

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

(Ref: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1 „deskryptor rodzaju tablica jest ważny tylko wtedy, gdy oznacza 255 lub mniej wymiarów”).

+2

Innymi słowy, jeśli potrzebowałeś więcej niż 255 (ha!), Musiałbyś uczynić zewnętrzne tylko tablice obiektów, a następnie rzucić je do rzeczywistego typu, gdy osiągniesz mniej niż 256. – Gabe

+0

To jest interesujące - nie zrobiłem tego ". t to wiem. Z jednej strony zastanawiam się, dlaczego ktokolwiek chciałby użyć tablicy o tej wymiarze, az drugiej zastanawiam się, dlaczego tak by to ograniczyło. – Cam

+1

@Cam 255 mieści się w 8 bitach. – kennytm

0

Mały eksperyment pokazuje, że maksymalnie 255 wymiarów. 256 powoduje błąd kompilacji;

The screenshot

+5

Ta odpowiedź została już dostarczona w 2010 roku :-) – Carpetsmoker

Powiązane problemy