javap对该类文件非常满意:
static java.lang.Class class$org$apache$log4j$Logger;
descriptor: Ljava/lang/Class;
flags: ACC_STATIC
Synthetic: true
access_flags应该是u2,意思是2字节无符号.令人费解的是看到0x41008,它大于u2.已知一些工具将access_flags存储在较大的类型中,并注入辅助位(ASM会这样做,JVM会这样做等等)我知道你正在阅读ASM,所以这可能就是你所看到的:
组织/ ObjectWeb联盟/ ASM / ClassReader.java:
} else if ("Synthetic".equals(attrName)) {
access |= Opcodes.ACC_SYNTHETIC
| ClassWriter.ACC_SYNTHETIC_ATTRIBUTE;
组织/ ObjectWeb联盟/ ASM / ClassWriter.java:
/**
* Pseudo access flag to distinguish between the synthetic attribute and the
* synthetic access flag.
*/
static final int ACC_SYNTHETIC_ATTRIBUTE = 0x40000;
问题是,它是如何泄露给你的……