Enumに対するVisitorパターン(Generics対応 その2)
ワイルドカードを使った方がかっこいいかも。
追記
と思ったけどワイルドカード使ったときと使わないときの違いがわからなくなってきた...
public enum Hoge { FOO { public <T> T accept(HogeSwitch<? extends T> sw) { return sw.foo(); } }, BAR { public <T> T accept(HogeSwitch<? extends T> sw) { return sw.bar(); } }; public abstract <T> T accept(HogeSwitch<? extends T> sw); public static interface HogeSwitch<T> { T foo(); T bar(); } }