Color字节码代码
1.final enum hr.test.Color {
2.
3. // 所有的枚举值都是类静态常量
4. public static final enum hr.test.Color RED;
5. public static final enum hr.test.Color BLUE;
6. public static final enum hr.test.Color BLACK;
7. public static final enum hr.test.Color YELLOW;
8. public static final enum hr.test.Color GREEN;
9.
10.private static final synthetic hr.test.Color[] ENUM$VALUES;
11.
12. // 初始化过程,对枚举类的所有枚举值对象进行第一次初始化
13. static {
14. 0 new hr.test.Color [1]
15. 3 dup
16. 4 ldc <String "RED"> [16] //把枚举值字符串"RED"压入操作数栈
17. 6 iconst_0 // 把整型值0压入操作数栈
18. 7 invokespecial hr.test.Color(java.lang.String, int) [17] //调用Color类的私有构造器创建Color对象RED
19. 10 putstatic hr.test.Color.RED : hr.test.Color [21] //将枚举对象赋给Color的静态常量RED。
20. ......... 枚举对象BLUE等与上同
21. 102 return
22.};
23.
24. // 私有构造器,外部不可能动态创建一个枚举类对象(也就是不可能动态创建一个枚举值)。
25. private Color(java.lang.String arg0, int arg1){
26. // 调用父类Enum的受保护构造器创建一个枚举对象
27. 3 invokespecial java.lang.Enum(java.lang.String, int) [38]
28.};
29.
30. public static hr.test.Color[] values();
31.
32. // 实现Enum类的抽象方法
33. public static hr.test.Color valueOf(java.lang.String arg0);
34.}
final enum hr.test.Color {
// 所有的枚举值都是类静态常量
public static final enum hr.test.Color RED;
public static final enum hr.test.Color BLUE;
public static final enum hr.test.Color BLACK;
public static final enum hr.test.Color YELLOW;
public static final enum hr.test.Color GREEN;
private static final synthetic hr.test.Color[] ENUM$VALUES;