[英]Java reflection, call method from superClass?
我看过很多例子,我知道讨论了什么。 我做的一切都正确,但我收到一个错误。 这是为什么? 我究竟做错了什么?
Class superClass = rootObject.getSuperclass();
Method addErrorMethod = superClass.getDeclaredMethod("addErrorMessage", ErrorType.class, String.class, String.class, String.class);
_log.info(addErrorMethod.getName());
addErrorMethod.invoke(superClass, ErrorType.FIELD, propertyName, message, "");
我得到方法,但是当你调用调用者时。 我收到以下错误。
java.lang.IllegalArgumentException: object is not an instance of declaring class
谢谢。
当您调用Method.invoke
,第一个参数必须是:
null
或类本身时。由于您传递了类本身并且出现错误,这表明您尝试调用的方法不是静态的,因此您应该像这样调用它
addErrorMethod.invoke(rootObject, ErrorType.FIELD, propertyName, message, "");
// ^^^^^^^^^^- assuming it is instance on which we want to invoke this method
你没有做对每一件事:
addErrorMethod.invoke(superClass, ErrorType.FIELD, propertyName, message, "");
应该读
addErrorMethod.invoke(rootObject, ErrorType.FIELD, propertyName, message, "");
superClass
是Class
一个实例,其中没有addErrorMessage()
方法,正如错误消息告诉您的那样。 该方法的第一个参数是对将在该方法中用作this
的对象的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.