Java类可以拥有的最大方法数是多少?

Phi*_*hil 29 java class

我正在考虑构建一个非常大的Java类,Java类可以有多少方法限制?它可以进入数以百万计的方法吗?

更新:目的是,做一个"上帝"课程.

Joh*_*ica 54

根据Java类文件规范,限制为65535:

4.10 Java虚拟机的限制

Java虚拟机的以下限制隐含在class文件格式中:

  • 可以通过类或接口声明的方法数量被结构methods_count项的大小限制为65535 ClassFile(第4.1节).请注意,结构methods_count项的值ClassFile不包括从超类或超接口继承的方法.

  • 我认为,由于方法名称也转到常量池,因此65535限制也与类中其他内容的名称共享(例如常量,字段). (4认同)

Thi*_*ilo 15

不.来自类文件格式规范的一些相关部分:

Java虚拟机的以下限制隐含在类文件格式中:

  • ClassFile结构的16位constant_pool_count字段(第4.1节)将每类或每接口常量池限制为65535个条目.这是对单个类或接口的总复杂性的内部限制.

  • 可以由类或接口声明的方法数量被ClassFile结构(第4.1节)的methods_count项的大小限制为65535.请注意,ClassFile结构的methods_count项的值不包括从超类或超接口继承的方法.

我认为这意味着您可以拥有65535个方法,但前提是您没有其他对象占用常量池中的插槽(例如字段名称).

除此之外,每种方法还有最大尺寸:

  • 每个非本机非抽象方法的代码量由Code属性(第4.7.3节)的exception_table中的索引大小限制为65536字节,在LineNumberTable属性(第4.7.8节)中,在LocalVariableTable属性中(§4.7.9).