Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java通过反射创建枚举实例_Java_Reflection_Enums - Fatal编程技术网

Java通过反射创建枚举实例

Java通过反射创建枚举实例,java,reflection,enums,Java,Reflection,Enums,我想获取枚举类型的实例,以便: String enumString="abc"; MyClass.MyEnum enumType=Class.forName("com.MyClass.MyEnum."+enumString); 这给了我一个不可转换的类型。您正在寻找MyClass.MyEnum.valueOf(enumString)。不需要完全限定字符串中的类。查看一下就可以了,但是它对类型非常挑剔。确保将类强制转换为类如果在编译时知道类型,为什么需要反射?我声明了一个字符串以简化代码。显然,

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

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

这给了我一个不可转换的类型。

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

查看一下就可以了,但是它对类型非常挑剔。确保将
强制转换为
类如果在编译时知道类型,为什么需要反射?我声明了一个字符串以简化代码。显然,在我的代码中,enumString不是硬编码的,而是作为参数传递的。为什么需要反射?为什么不只是MyEnum e=Enum.valueOf(MyEnum.class,“abc”);原始问题的作者建议他们使用反射,使用
Class.forName
并用
reflection
标记问题。棘手的是,
forClass
的返回类型不是传递给
Enum.valueOf
的正确类型。如果您在编译时知道Enum类型,如作者的示例代码中所述,则不需要反射。问题是“Java通过反射创建Enum实例”。示例代码可能只是说明了一种不起作用的方法。我们没有足够的信息来知道反射是该用户的一种需求,还是一个假定必要的实现细节。因此,波佐提出了上述问题,我向提出问题的人作出了澄清。这不是对你的批评,只是澄清。
enum Foo {
    BLAT,
    BLARG
};

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