当查看
从字节码中可以看出,这个字段代表了自引用类,而当时常量池还不能引用类型。但是,我发现这个字段的修饰符很奇怪,它是
请问第19位的这个修饰符是从哪里来的?它表示什么?(Log4j编译为Java 1)。
org.apache.log4j.Logger
类文件时,我们会发现它定义了一个类型为Class
的合成字段,名称为class$org$apache$log4j$Logger
。从字节码中可以看出,这个字段代表了自引用类,而当时常量池还不能引用类型。但是,我发现这个字段的修饰符很奇怪,它是
0x41008
,表示一个private
、synthetic
字段(我可以跟踪),但是它还添加了一个0x40000
的修饰符,在任何地方都找不到相关文档说明。请问第19位的这个修饰符是从哪里来的?它表示什么?(Log4j编译为Java 1)。
ldc
指令无法将这样的引用作为Class
对象加载到操作数栈中。但是类常量池类型已经存在,允许指定this
和super
类型,实现接口并声明所引用成员的类。 - Holger