1.例子:使用jad.exe将enum定义的枚举类型反编译成Enum的类类型
TestEnum.java
public enum TestEnum {
ONE(false), TWO(true);
boolean mIsSelected;
private TestEnum(boolean isSelected) {
this.mIsSelected = isSelected;
}
}
将TestEnum.class反编译成TestEnum.jad
public final class TestEnum extends Enum
{
private TestEnum(String s, int i, boolean isSelected)
{
super(s, i); // 父类Enum的构造函数只有一个
mIsSelected = isSelected; // 要使用什么参数自己去维护
}
public static TestEnum[] values()
{
TestEnum atestenum[];
int i;
TestEnum atestenum1[];
System.arraycopy(atestenum = ENUM$VALUES, 0, atestenum1 = new TestEnum[i = atestenum.length], 0, i);
return atestenum1;
}
public static TestEnum valueOf(String s)
{
return (TestEnum)Enum.valueOf(TestEnum, s);
}
// 编译器自己生成静态变量和和静态TestEnum类的数组
public static final TestEnum ONE;
public static final TestEnum TWO;
boolean mIsSelected;
private static final TestEnum ENUM$VALUES[];
static
{
ONE = new TestEnum("ONE", 0, false);
TWO = new TestEnum("TWO", 1, true);
ENUM$VALUES = (new TestEnum[] {
ONE, TWO
});
}
}
总结:enum定义的类,编译器会做处理,把enum定义的类转换成Enum类型。所以enum本质就是个类,java一切皆对象/类