2016-12-06 127 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最好的方法是讓'enum'的值與'String'的值相同,並使用'valueOf()',如@ jon-skeet鏈接的答案中所建議的那樣。如果不可能,如果你有很多枚舉值並且你想要更好的性能,你可以改變'parseValue()'的實現來使用'Map'。 –

+0

謝謝!我現在明白了。 –