Java支持的数组维度有多少,比如[1][1][1][1]..[1]



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 .

相关内容

  • 没有找到相关文章

最新更新