java enum从字符串名称接收值

时间:2011-07-08 10:44:54

标签: java string list enums

我喜欢这样:

public enum Enum2 
{
    ONE,TWO,THREE;
}

我可以列出所有值:

public static void main(String... args)
{
   for (Enum2 e : Enum2.values()) 
   {
        System.out.println(e);
   }

}

如果我只有字符串名称Enum?

,是否可以列出值?
String enum_name="Enum2";

E.g。如果在某些逻辑中:

if (a>b) 
{
enum_name="EnumA";
} 
else
{
enum_name="EnumB";
}

在我收到enum的字符串名称后 - 我可以列出所有值。

3 个答案:

答案 0 :(得分:2)

Class<?> enumClazz = Class.forName("com.mycompany.Enum2");
for (Enum<?> e : ((Class<? extends Enum<?>>)enumClazz).getEnumConstants()) {
    System.out.println(e.name()); // The variable "e" would be Enum2.ONE, etc
}

感谢@Harry帮助我做到这一点。

答案 1 :(得分:1)

你的问题不太清楚,但这是你可能想做的事情

 Class<?> cls = Class.forName("EnumName");
 if (cls.isEnum()) {
   Field[] flds = cls.getDeclaredFields();
   //-- your logic for fields.
 }

您可以使用:Class.getEnumConstants()。有关详情,请参阅this

答案 2 :(得分:-1)

是的,

Enum2.EnumA.toString();