简体   繁体   English

Java通过反射创建枚举实例

[英]Java create an instance of enum via reflection

I want to get an instance to an enum type, so that: 我想获取枚举类型的实例,以便:

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

This gives me an inconvertible types. 这给了我一个不可思议的类型。

Enum.valueOf will do it, but it is pretty picky about it's type. Enum.valueOf会这样做,但它的类型非常挑剔。 Make sure you cast the Class to Class<? extends Enum> 确保你将ClassClass<? extends Enum> Class<? extends Enum> . Class<? extends Enum> Example: 例:

enum Foo {
    BLAT,
    BLARG
};

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

You are looking for MyClass.MyEnum.valueOf(enumString) . 您正在寻找MyClass.MyEnum.valueOf(enumString) No need to fully qualify the class in the string. 无需完全限定字符串中的类。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM