Java создает экземпляр enum с помощью отражения - PullRequest
4 голосов
/ 24 февраля 2011

Я хочу получить экземпляр типа enum, чтобы:

String enumString="abc";
MyClass.MyEnum enumType=Class.forName("com.MyClass.MyEnum."+enumString);

Это дает мне необратимые типы.

Ответы [ 3 ]

19 голосов
/ 24 февраля 2011

Enum.valueOf сделает это, но довольно требовательно к его типу.Убедитесь, что вы разыгрываете Class на Class<? extends Enum>.Пример:

enum Foo {
    BLAT,
    BLARG
};

System.out.println(Enum.valueOf((Class<? extends Enum>)Class.forName("Foo"), "BLARG"));
8 голосов
/ 24 февраля 2011
7 голосов
/ 24 февраля 2011

Вы ищете MyClass.MyEnum.valueOf(enumString).Нет необходимости полностью определять класс в строке.

...