2016-12-06 8 views
0

文字列値を持つこの列挙型を作成しました。JAVA文字列を対応する列挙型に変換しますか?

私はこのような列挙型を持っている:今

enum MyEnum { 
    NAME_ONE("one"), 
    NAME_TWO("two"); 

    private String value; 

    MyEnum(String value) { 
     this.value = value; 
    } 

    public String toString() { 
     return value; 
    } 
} 

、私は列挙型に文字列を変換したい:

String enumValue = "one"; 
MyEnum mMyEnum = ??? // I want to make MyEnum.NAME_ONE from "one", but how? 

答えて

1

あなたはあなたのenumにメソッドを追加することができます。

public static MyEnum parseValue (final String value) { 
    for (final MyEnum me : MyEnum.values()) { 
     if (me.value.equals(value)) { 
      return me; 
     } 
    } 
    throw new IllegalArgumentException("Incorrect value: " + value); 
} 

そしてそのように呼んでください:

String enumValue = "one"; 
MyEnum mMyEnum = MyEnum.parseValue(enumValue); 
+0

これは唯一の方法でしょうか? –

+0

@ Joon.P 'jum-skeet 'によってリンクされている答えに示唆されているように、' enum'値に 'String'値と同じ名前を持たせ、' valueOf() 'を使うのが最善の方法です。可能でない場合、 'parseValue()'の実装を変更して、 'Map'を使用することができます。多くのenum値を持ち、より良いパフォーマンスが必要な場合に使用します。 –

+0

ありがとう!わかった。 –

関連する問題