2010-10-30 17 views

Respuesta

34

El Java lenguaje no limita el número de dimensiones, pero la especificación de Java VM limita el número de dimensiones a 255.

Por ejemplo, el siguiente código fallará para compilar:

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

con error:

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 "Un descriptor tipo de matriz sólo es válida si representa 255 o menos dimensiones.")

+2

En otras palabras, si necesitabas más de 255 (¡ha!), Tendrías que convertir las externas en matrices de objetos y luego convertirlas al tipo real una vez que estuvieras por debajo de 256. – Gabe

+0

Esto es interesante, no lo hice lo sé. Por un lado, me pregunto por qué alguien querría usar una matriz de esa dimensionalidad, y por el otro, me pregunto por qué lo limitarían así. – Cam

+1

@Cam 255 cabe en 8 bits. – kennytm

0

Pequeño experimento muestra que 255 dimensiones son máximas. 256 causa error de compilación;

The screenshot

+5

Esta respuesta ya se proporcionó en 2010 :-) – Carpetsmoker

Cuestiones relacionadas