※Qiita始めたのでHatenaやめようと思ったので昔の写しです。
javaのEnumってabstract methodが書けるね。
こんなのだね。
public class Otameshi {
public enum E {
A {
@Override
void method() {
System.out.println("A method");
}
},
B {
@Override
void method() {
System.out.println("B method");
}
};
abstract void method();
}
public static void main(String[] args) {
for (E e : E.values()) {
e.method();
}
}
}
で、なんとなく気になってクラスファイルを覗いたら案の定クラスがEnum宣言分増えてたよ。
つまり、
public class Otameshi {
public enum E {
A {
@Override
void method() {
System.out.println("A method");
}
},
B {
@Override
void method() {
System.out.println("B method");
}
};
abstract void method();
}
public static void main(String[] args) {
for (E e : E.values()) {
System.out.println(e.getClass());
}
}
}
ってやると
class Otameshi$E$1
class Otameshi$E$2
ってなる。