gpt4 book ai didi

java - 将反射的枚举传递给 method.invoke java

转载 作者:行者123 更新时间:2023-11-30 07:38:56 25 4
gpt4 key购买 nike

如果您有一个通过反射访问的枚举,您将如何将它的值传递给 method.invoke 调用。

会不会像(为简单起见显示为静态方法)


Class enumClazz = Class.forName("mypkg.MyEnum",true,MyClassLoader);
Class myReflectedClazz = Class.forName("mypkg.MyClass",true,MyClassLoader);
Field f = enumClazz.getField("MyEnumValue");

Method m = myReflectedClazz.getMethod("myMethod",enumClazz);
m.invoke(null,f.get(null));

最佳答案

你可能应该这样做:

Enum e = Enum.valueOf(enumClazz, "MyEnumValue");

当您使用原始类型时,您将收到未检查 警告,但这将编译并运行。

使用反射,您需要传递一个实例来访问 Field - 但是在静态方法的情况下,您可以将 null 传递给 Field get方法如下:

m.invoke(null,f.get(null));

此外 - myMethod 是一个 static 方法吗,因为您也在没有实例的情况下调用它?

关于java - 将反射的枚举传递给 method.invoke java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1278523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com