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;
}
}
上記の列挙型で、VAL3 の定数固有のクラス本体を追加すると、正確にはどうなりますか?
VAL3 の型は、オーバーロードされたメソッドと追加のメソッドがあるため、明らかに myEnum のサブタイプです。(クラス型は 'myEnum$1' になります)
しかし、すべての列挙型が既に java.lang.enum を拡張しているため、コンパイラは myEnum を拡張するサブタイプの列挙型をどのように作成できますか?