我已经看过很多例子,我知道所讨论的内容。 我做的一切都很正确,但我收到了一个错误。这是为什么?我做错了什么?
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
感谢。
答案 0 :(得分:5)
当您致电if(input_into.nextInt() != 0 || input_into.nextInt() < 0)
时,第一个参数必须是:
Method.invoke
或类本身时。 由于您自己传递了类并且出现了错误,因此它表明您尝试调用的方法不是静态的,因此您应该调用它,如
null
答案 1 :(得分:0)
你做得不对:
addErrorMethod.invoke(superClass, ErrorType.FIELD, propertyName, message, "");
应该阅读
addErrorMethod.invoke(rootObject, ErrorType.FIELD, propertyName, message, "");
superClass
是Class
的一个实例,没有addErrorMessage()
方法,正如错误消息告诉您的那样。该方法的第一个参数是对将在方法中用作this
的对象的引用。