我们都知道,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