2012-08-02 130 views
2

比方說,我有一個值枚舉的返回列表從字符串常量枚舉的名字值

'Language' 

一個字符串,我有一個叫做語言

enum Language{ 
    English, 
    Spanish, 
    French 
} 

枚舉是否有使用方法字符串'Language'並返回Enum Language的值。我基本上想知道是否有一種方法通過傳遞字符串來獲取Enum Language的實例。有點像

Class.forName() 

但是用於枚舉。

+0

忽略我的關閉,這是java(oops) – Hogan 2012-08-02 19:24:17

+0

也許這就是答案?我不知道Java以及不能測試:http://stackoverflow.com/a/4751239/215752 – Hogan 2012-08-02 19:25:39

回答

5

enum是一個類,所以使用完全限定名(例如"com.mydomain.myapp.Language"),您可以從Class.forName獲得枚舉的類。從那裏,您可以使用Class對象的反射:getEnumConstants爲您提供了枚舉的所有值,如果您想要名稱,則可以在Enum對象上使用.name

+0

什麼是com.mydomin.myapp?再加上我的枚舉是在一個包中,所以我如何在名稱中包含 – 2012-08-02 19:28:43

+0

類的全限定名[如文檔](http://docs.oracle.com/javase/6/docs/api/java/lang/ Class.html#的forName(java.lang.String中))。 – Xaerxess 2012-08-02 19:30:14

+0

我認爲這是正確的答案,只想添加另一個與Oracle教程中的鏈接,顯示如何使用反射來獲取值:http://docs.oracle.com/javase/tutorial/reflect/special/enumMembers .html – 2012-08-02 19:30:26