java类或关联对象实例可以拥有的字段数是否有限制,如果是,那么它是什么?
我明确询问字段,而不是这个问题中提到的方法: What is the maximum number of methods a Java class can have?
答案 0 :(得分:1)
在JVM规范中它说:
类或接口可以声明的字段数 ClassFile的fields_count项的大小限制为65535 结构(§4.1)
答案 1 :(得分:1)
class file format包含一个字段声明列表,其大小为无符号短整数,因此可以允许65535声明,但实际上不可能声明65535个字段。
每个字段必须具有唯一的名称和类型组合,并且这些名称和类型存储在类的常量池中,该池只能容纳65534个条目,但也将包含描述当前类及其超级的常量class和属性名称,以及其他功能。需要专用常量条目的类的每个特性都将减少声明字段的可能数量。
因此,对于要求所有字段都具有唯一名称的Java源代码,不可能在类中声明许多字段。使用手工制作的字节代码,您可以利用名称不需要唯一的事实来声明65535个字段,但是您不能在同一个类中使用所有这些字段,因为访问该字段需要一个“名称和类型”条目来描述唯一组合,以及指向“名称和类型”条目和声明类的字段描述符。
但请记住,类可以继承超类中的字段。