2010-10-30 5 views

Antwort

34

Die Java Sprache nicht die Anzahl der Dimensionen begrenzen, aber die Java VM spec begrenzt die Anzahl der Dimensionen bis 255

Zum Beispiel wird der folgende Code kompilieren fehlschlagen:

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

mit Fehler:

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 „Ein Array Typdeskriptor ist nur gültig, wenn es 255 oder weniger darstellt Dimensionen.“)

+2

Mit anderen Worten, wenn Sie mehr als 255 (ha!) Benötigten, müssten Sie die äußeren nur Arrays von Objekten erstellen und sie dann auf den tatsächlichen Typ umwandeln, sobald Sie unter 256 waren. – Gabe

+0

Das ist interessant - ich habe nicht Das weiß ich. Auf der einen Seite frage ich mich, warum irgendjemand jemals ein Array dieser Dimensionalität verwenden möchte, auf der anderen frage ich mich, warum sie es so begrenzen würden. – Cam

+1

@Cam 255 passt in 8 Bits. – kennytm

0

Kleines Experiment zeigt, dass 255 Dimensionen maximal ist. 256 verursacht einen Kompilierungsfehler;

The screenshot

+5

Diese Antwort wurde bereits im Jahr 2010 zur Verfügung gestellt :-) – Carpetsmoker

Verwandte Themen