最好的方法之一是使用 枚举多态技术 :
public class EnumTest { public enum Foo { A { @Override public Bar getBar() { return Bar.Alpha; } }, B { @Override public Bar getBar() { return Bar.Delta; } }, C { @Override public Bar getBar() { return Bar.Alpha; } }, ; public abstract Bar getBar(); } public enum Bar { Alpha { @Override public Foo getFoo() { return Foo.A; } }, Beta { @Override public Foo getFoo() { return Foo.C; } }, Delta { @Override public Foo getFoo() { return Foo.C; } }, ; public abstract Foo getFoo(); } public static void main(String[] args) { for (Foo f : Foo.values()) { System.out.println(f + " bar " + f.getBar()); } for (Bar b : Bar.values()) { System.out.println(b + " foo " + b.getFoo()); } }}上面的代码产生所需的输出:
A bar AlphaB bar DeltaC bar AlphaAlpha foo ABeta foo CDelta foo C
也可以看看:
- 特定枚举的覆盖方法



