簡體   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