我正在查看JVM 字节码指令,并惊讶地发现类之间的所有交互(例如强制转换new
等)都依赖于常量池查找以查找其他类的标识。
我是否正确推断这意味着一个班级不能知道超过 64k 其他班级的存在,因为不可能引用他们?如果确实需要参考这么多,应该怎么做——将工作委托给多个类,每个类都可以有自己的 <64k 交互?
(这让我感兴趣的原因是我有编写代码生成器的习惯,有时会生成数千个不同的类,并且某些语言(例如 Scala)会大量创建类。因此,如果是真的,我似乎必须小心:如果我在一个类中有数百个方法,每个方法使用数百个(不同的)类,我可以超过常量池空间。)