Java 类可以拥有的最大字段数是多少?

And*_*ann 4 java jvm

java类或关联对象实例可以拥有的字段数是否有限制,如果有,是什么?

我明确询问字段,而不是在这个问题中询问 的方法:Java 类可以拥有的最大方法数是多少?

Hol*_*ger 7

在类文件格式包含字段声明,其大小是一个无符号短,因此可以允许65535点声明列表,但它不是在实践中可能宣布65535场。

每个字段必须有唯一的名称和类型组合,这些名称和类型存储在类的常量池中,最多只能容纳 65534 个条目,但还将包含描述当前类及其超类的常量以及属性名称等功能。需要专用常量条目的类的每个功能都将减少声明字段的可能数量。

因此,对于要求所有字段具有唯一名称的 Java 源代码,不可能在一个类中声明那么多字段。使用手工制作的字节码,您可以利用名称不需要唯一的事实来声明 65535 个字段,但您不能在同一个类中使用所有这些字段,因为访问该字段需要一个“名称和类型”条目来描述唯一的组合,加上一个指向“名称和类型”条目和声明类的字段描述符。

但请记住,类可以从超类继承字段。


And*_*ann 6

JVM 规范中写道:

\n\n
\n

类或接口可以声明的字段数被 ClassFile 结构的 fields_count 项的大小限制为 65535 (\xc2\xa74.1)

\n
\n

  • 另请注意,ClassFile 结构的 fields_count 项的值不包括从超类或超接口继承的字段。 (3认同)