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