Keep it simple, stupid!!

IT系で調べたこととか考えたこととか書くつもりです。

Enumのabstract method

javaEnumって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

ってなる。