我在做什么:获取名为“f3”的类型为“K”的反射字段的值。我希望能够使用f3的值来反映其中的字段。 (编辑)f3位于类b中,它来自.jar文件。 (编辑)反射IllegalArgumentException java
获取我尝试给出错误的值的所有方法:无法将K字段f3设置为java.lang.Class。
问题:如何获得类b
(它是从外部jar加载的类)上的字段f3
(类型K
)的值?
下面的代码引发IllegalArgumentException
:
Class instance = loadClass("b"); // simplified for readability
Field fieldf3 = instance.getDeclaredField("f3");
fieldf3.setAccessible(true);
Object value = fieldf3.get(instance); //exception on this line.
堆栈跟踪:
java.lang.IllegalArgumentException: Can not set K field b.f3 to java.lang.Class
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58)
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
at java.lang.reflect.Field.get(Field.java:387)
实例是b.class,b在其内部具有类型为K的字段f3。 b是来自.jar文件 – TKG
实例不是K类 – TKG
是的,在我的代码中,你的K k是我的b实例,而你的int f3是我想要的K f3值,但是field.get(instance)是给出的问题 – TKG