Java通过反射创建枚举实例

时间:2011-02-24 17:32:17

标签: java reflection enums

我想获取枚举类型的实例,以便:

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

这给了我一个不可思议的类型。

3 个答案:

答案 0 :(得分:18)

Enum.valueOf会这样做,但它的类型非常挑剔。确保将Class投射到Class<? extends Enum>。例如:

enum Foo {
    BLAT,
    BLARG
};

System.out.println(Enum.valueOf((Class<? extends Enum>)Class.forName("Foo"), "BLARG"));

答案 1 :(得分:8)

答案 2 :(得分:7)

您正在寻找MyClass.MyEnum.valueOf(enumString)。无需完全限定字符串中的类。