繁体   English   中英

Java反射,从超类调用方法?

[英]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, "");

superClassClass一个实例,其中没有addErrorMessage()方法,正如错误消息告诉您的那样。 该方法的第一个参数是对将在该方法中用作this的对象的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM