java enum получает значения из имени строки - PullRequest
3 голосов
/ 08 июля 2011

У меня есть перечисление как:

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";

Например, если в некоторой логике, например:

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

И после того, как я получу строковое имя enum - я могу перечислить все значения.

Ответы [ 3 ]

2 голосов
/ 08 июля 2011
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
}

Спасибо, Гарри, за то, что помогли мне понять это правильно.

1 голос
/ 08 июля 2011

Ваш вопрос не очень понятен, но вы можете это сделать

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

Вы можете использовать: Class.getEnumConstants()Подробнее см. это .

0 голосов
/ 08 июля 2011

да, с

Enum2.EnumA.toString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...