结合代码理解Class文件中的Flags
本文重点在后面两张图。
JVM类标志:
Flag Name | Value | Interpretation |
---|---|---|
ACC_PUBLIC |
0x0001 | 公有类 |
ACC_FINAL |
0x0010 | Final标识,不可是超类 |
ACC_SUPER |
0x0020 | 在被调用的特殊指令调用时,特别处理超类方法 |
ACC_INTERFACE |
0x0200 | 接口类 |
ACC_ABSTRACT |
0x0400 | 抽象类,如果类被ACC_INTERFACE标志,它也会被标志为ACC_ABSTRACT |
ACC_SYNTHETIC |
0x1000 | 由编译器生成的,并没有出现在源代码中 |
ACC_ANNOTATION |
0x2000 | 注释类型 |
ACC_ENUM |
0x4000 | 类或者它的超类被声明为枚举类型 |
JVM方法标志:
Flag Name | Value | Interpretation |
---|---|---|
ACC_PUBLIC |
0x0001 | 公有方法 |
ACC_PRIVATE |
0x0002 | 私有方法 |
ACC_PROTECTED |
0x0004 | 保护方法 |
ACC_STATIC |
0x0008 | 静态方法 |
ACC_FINAL |
0x0010 | Final方法,不能 override |
ACC_SYNCHRONIZED |
0x0020 | 同步方法 |
ACC_BRIDGE |
0x0040 | 由编译器生成的桥接方法 |
ACC_VARARGS |
0x0080 | 使用可变数量的参数声明 |
ACC_NATIVE |
0x0100 | 声明本地人,用 Java 以外的语言实现 |
ACC_ABSTRACT |
0x0400 | 抽象标志,无实现 |
ACC_STRICT |
0x0800 | 严格的浮点运算规则 |
ACC_SYNTHETIC |
0x1000 | 由编译器生成的,并没有出现在源代码中 |
方法标志中较特殊的是BRIDGE和SYNTHETIC。可通过下面的代码理解。

面严格的浮点运算规则:

结合代码理解Class文件中的Flags
https://blog.isnap.cn/posts/3c858c0b/