[英]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.