我们都知道,Enum特性是
jdk5引入的,表面上和类、接口属于同一层次,那么我们反编译class文件会出现什么呢?
首先,我写了一个简单的Enum,如下所示:
public enum Sex {
    MALE("男"),FEMALE("女");
    private String desc;
    Sex(String desc) {
        this.desc = desc;
    }
}
- 编译:
 javac Sex.java
- 用
 jad工具反编译:jad Sex.class
结果如下所示:
public final class Sex extends Enum
{
    public static Sex[] values()
    {
        return (Sex[])$VALUES.clone();
    }
    public static Sex valueOf(String s)
    {
        return (Sex)Enum.valueOf(com/zpengc/lang/Sex, s);
    }
    private Sex(String s, int i, String s1)
    {
        super(s, i);
        desc = s1;
    }
    public static final Sex MALE;
    public static final Sex FEMALE;
    private String desc;
    private static final Sex $VALUES[];
    static 
    {
        MALE = new Sex("MALE", 0, "\u7537");
        FEMALE = new Sex("FEMALE", 1, "\u5973");
        $VALUES = (new Sex[] {
            MALE, FEMALE
        });
    }
}
1.
枚举Sex就是一个继承了Enum的普通类
2.类中添加了
valueof、values方法
3.定义的
MALE和FEMALE对象在编辑阶段就被创建了并且被存储在数组中
原文:https://www.cnblogs.com/codezpc/p/12739924.html