Sar*_*n M 3 java inheritance enums
public enum myEnum {
VAL1(10), VAL2(20), VAL3("hai") {
public Object getValue() {
return this.strVal;
}
public String showMsg() {
return "This is your msg!";
}
};
String strVal;
Integer intVal;
public Object getValue() {
return this.intVal;
}
private myEnum(int i) {
this.intVal = new Integer(i);
}
private myEnum(String str) {
this.strVal = str;
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的枚举中,当我为VAL3添加一个常量特定的类体时会发生什么?
VAL3的类型绝对是myEnum的子类型,因为它有重载和其他方法.(类类型来自'myEnum $ 1')
但是编译器如何创建一个扩展myEnum的子类型枚举,因为所有枚举都已经扩展了java.lang.enum?
您的类myEnum继承自java.lang.Enum.VAL3是一个匿名内部类,它继承自myEnum,名为myEnum $ 1.将enum关键字视为合成糖.它为您设置具有普通继承树的类,但不允许您直接扩展java.lang.Enum或myEnum.