我对java类文件(.class)感兴趣 如果我们使用javap看到.class文件,可以看到常量池信息。
#4 = Utf8 java/lang/Object
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Utf8 Code
索引#1,#2,#3,#4,#5,#6 .......
java编译器将genreate这些索引... 是否有规则来生成索引号?这是随机数吗?
答案 0 :(得分:1)
是否有生成索引号的规则?
如果您的意思是,是否指定了规则(在JVM规范中),则答案为否。
是随机数吗?
没有。如果您深入研究了编译器源代码等,理论上 就会有足够的信息来预测常量池条目的索引值。索引的分配看起来是随机的,但它(我认为)是完全确定的和可重复的。
但是,预测任意Java程序的索引(不编译它!)不太可行。