像a[1][1][1][1]....[1]
这样的Java支持多少数组维度?我可以为数组声明无限维数吗?
数组的维数限制为255。
有趣的是,在JLS定义的Java编程语言中没有这样的限制,但是您可以在JVM规范中看到,数组维度存储在1字节中。
然而,您很难在日常开发中满足这个限制。: -)
从JVM规范来看,它是255
"数组类型描述符只有在表示255或更少时才有效维度。"
你也可以检查数组类型描述符是否有超过255个维度
jvm -2有关于数组维度的断言:
"4.10 Java虚拟机的限制…的数量数组的大小限制为255多维操作码的多存储器指令和由约束施加在多阵列、新阵列和新阵列上4.8.2. ...的说明"
和
"4.4.1 CONSTANT_Class_info结构体…"数组类型描述符只有在表示255或更少维度时才有效。"看起来像是最后一个断言只适用于第4.4.1章。
但是章节:2.7.5完全限定名称4.2完全限定类名和接口名的内部形式4.3描述符(4.3.2字段描述符和4.3.3方法描述符)没有提到维度的限制。
进一步,以下章节:4.4.6 CONSTANT_NameAndType_info结构体4.5字段4.6方法引用字段描述符和方法描述符(descriptor_index)的定义,也没有提到维度限制。
所以根据jvm -2的描述CONSTANT_NameAndType_info, field_info或method_info结构可以请参考表示超过255个维度或的字段描述符方法描述符使用类似的ParameterDescriptor或ReturnDescriptor .