2012-08-02 101 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