2011-09-20 39 views
0

我需要設置一個枚舉值,像這樣:如果你有一個字符串和枚舉沒有getSomething(String str)方法,你如何查找枚舉值?

this.myEnum = ThirdPartyEnum.ABC; 

但我提供給我的價值不枚舉形式。

這只是一個原始字符串:

"ABC" 

ThirdPartyEnum沒有一個ThirdPartyEnum.lookupEnumForString()

如何翻譯字符串

"ABC" 

到:

ThirdPartyEnum.ABC 
+0

看起來像一個重複[我怎樣才能從查找的字符串值的Java枚舉?](http://stackoverflow.com/q/1080904/851811) –

+0

是的,它的ID DUP ...我的意思在幾次之前沒有問過這個機會是什麼 –

回答

2

嘗試Enum.valueOf()

Enum.valueOf()

或者

ThirdPartyEnum.valueOf("ABC"); 

valueOf是爲所有Java Enum類定義的默認方法。

如果您正在進行函數式編程,Guava提供了一種創建函數來獲取valueOf的方法。

Enums.valueOfFunction

+0

+1:不知道。很有用! – Heisenbug

4

你可以做

ThirdPartyEnum.valueOf("ABC"); 

我想補充,並與你提到的,如果你想查詢其屬性中的一個枚舉值lookupEnumForString()方法,你可以使用values() 。請注意,values()是公開的,您也可以在沒有控制權的第三方枚舉中使用它。

public enum MyEnum { 

    VAL1("1"), VAL2("2"); 

    String attr; 
    private MyEnum(String attr){ 
     this.attr = attr; 
    } 
    public String getAttr() { return attr; } 

    public static MyEnum getByAttr(String searchAttr) { 
     for(MyEnum t : values()){ 
      if(searchAttr.equals(t.getAttr())){ 
       return t; 
      } 
     } 
    } 
}