gpt4 book ai didi

java - ClassLoader getDeclaredField 实例错误

转载 作者:行者123 更新时间:2023-12-02 06:52:02 24 4
gpt4 key购买 nike

为什么当我尝试调用我得到的方法时:

java.lang.IllegalArgumentException: object is not an instance of declaring class

我的代码:

Class<?> tWCCamRes = tCLSLoader.loadClass("com.github.sarxos.webcam.WebcamResolution");
Field tVGA = tWCCamRes.getDeclaredField("VGA");

Method tMeth = tVGA.getDeclaringClass().getDeclaredMethod("getSize");
tMeth.invoke(tVGA, (Object[]) null); // Error

理论上我传递了对象实例,但失败了。

提前致谢:)

最佳答案

您正在使用反射对 Field (tVGA) 类型的对象调用方法 getSize(),而不是调用它在此字段的上,该字段的类型为WebcamResolution

假设您确实需要通过反射来执行此操作,代码应该是:

Class<?> tWCCamRes = tCLSLoader.loadClass("com.github.sarxos.webcam.WebcamResolution");
Field tVGA = tWCCamRes.getDeclaredField("VGA");
Object vgaFieldValue = tVGA.get(null); // it's a static field, so the argument of get() can be null.

Method tMeth = tVGA.getDeclaringClass().getDeclaredMethod("getSize");
tMeth.invoke(vgaFieldValue);

关于java - ClassLoader getDeclaredField 实例错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17909329/

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