JDK5.0 新機能:java.lang.Enum クラスの getDeclaringClass() というメソッド
「4.3. 定数ごとに異なる振る舞いを持った enum」
基本的に、まんま
enum C2008082300_Color { RED, BLUE, YELLOW, BLACK, WHITE } enum C2008082300_Style { BOLD() { public String apply(String s) { return "<b>" + s + "</b>"; }}, ITALIC() { public String apply(String s) { return "<i>" + s + "</i>"; }}, RED() { public String apply(String s) { return "<span style=\"color:#FF0000\">" + s + "</span>"; }}; abstract public String apply(String s); } public class C2008082300 { public static void main(String[] args) { System.out.println(C2008082300_Color.class == C2008082300_Color.RED.getClass()); System.out.println(C2008082300_Color.RED.getClass() == C2008082300_Color.BLUE.getClass()); System.out.println(C2008082300_Color.class); System.out.println(C2008082300_Color.RED.getClass()); System.out.println(C2008082300_Color.BLUE.getClass()); System.out.println(C2008082300_Style.class == C2008082300_Style.BOLD.getClass()); System.out.println(C2008082300_Style.BOLD.getClass() == C2008082300_Style.ITALIC.getClass()); System.out.println(C2008082300_Style.class); System.out.println(C2008082300_Style.BOLD.getClass()); System.out.println(C2008082300_Style.ITALIC.getClass()); System.out.println(C2008082300_Style.class == C2008082300_Style.BOLD.getDeclaringClass()); System.out.println(C2008082300_Style.BOLD.getDeclaringClass() == C2008082300_Style.ITALIC.getDeclaringClass()); System.out.println(C2008082300_Style.class); System.out.println(C2008082300_Style.BOLD.getDeclaringClass()); System.out.println(C2008082300_Style.ITALIC.getDeclaringClass()); } }
で、
true true class C2008082300_Color class C2008082300_Color class C2008082300_Color false false class C2008082300_Style class C2008082300_Style$1 class C2008082300_Style$2 true true class C2008082300_Style class C2008082300_Style class C2008082300_Style