我在做什麼:獲取名爲「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