我刚刚编译了以下代码
public class A {
public static void main(String... args) {
int i = 3;
++i;
++i;
++i;
++i;
++i;
++i;
++i;
++i;
// repeat writing the expression ++i for 20,000 times
System.out.println(i);
}
}
并收到以下错误消息
方法 main(String...) 的代码是
超过 65535 字节限制
为什么Java要实现这个限制呢?我不认为这是合理的,因为 Java 确实包含 goto_w 指令。
See the Java虚拟机规范 http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#88659第 4.10 节:
4.10 Java虚拟机的局限性
- 每个非本机、非抽象方法的代码量限制为 65536 字节,具体取决于 Code 属性(第 4.7.3 节)和 LineNumberTable 属性(第 4.7.8 节)的 exception_table 中的索引大小,以及在 LocalVariableTable 属性中(第 4.7.9 节)。
在面向对象的编程语言中,没有什么充分的理由需要有这么长的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)