StringからEnumへ。
2008-09-20 - 思い悩むblog 改め Buriに片思い日記katzchang
基本的にはその通り、あまりスマートな方法はないようです。
valueをキーとしたDummyEnumを持つようなprivate static Mapを用意して逆変換させるとか、もしくはEnumUtilクラス的な何かを用意するとか。
ただ、例示の場合に限れば、DummyEnum.COL1 ではなく、DummyEnum.col1 という名前で定義した方がいいと思います。定数であるという言語的性質より、名前そのものが重要だという解釈です。
ありがたい事にご指摘をいただけました。
後だしで申し訳ない感じですが、基本はCOL1("col1_xxx")として使おうと考えていたので、staticなMapを使ってみました。
public class EnumTest { @Test public void test1() { DummyEnum e = DummyEnum.COL1; assertEquals("col1", e.toString()); } @Test public void test2() { DummyEnum e = DummyEnum.get("col2"); assertEquals("col2", e.toString()); } enum DummyEnum { COL1("col1"), COL2("col2"); private static Map<String, DummyEnum> _map; static { _map = new HashMap<String, DummyEnum>(); DummyEnum[] items = DummyEnum.values(); for (DummyEnum item: items) { _map.put(item.toString(), item); } } private String value; DummyEnum(String value) { this.value = value; } public String toString() { return this.value; } public static DummyEnum get(String value) { return _map.get(value); } } }
という事で良いのかな?