Enumに対するVisitorパターン(Generics対応)
昨日のコードをGenericsに対応させてみました。
これで任意の型を返せます。
戻り値を返したくない場合はHogeSwitchにVoid型を渡すことになると思います、たぶん。
public enum Hoge { FOO { public <T> T accept(HogeSwitch<T> sw) { return sw.foo(); } }, BAR { public <T> T accept(HogeSwitch<T> sw) { return sw.bar(); } }; public abstract <T> T accept(HogeSwitch<T> sw); public static interface HogeSwitch<T> { T foo(); T bar(); } }