簡體   English   中英

getMethods Reflection API結果與接口不明確

[英]getMethods Reflection API result is ambiguous with Interface

請看一下情況並提出如何刪除以下問題的建議。

  1. 我們有一個BaseRepository接口,該接口已經內置了commitData(),retrieveData(),sortByLength()方法。

      public interface BaseRepository{ public void commitData(); public Object retrieveData(); public Object sortByLength(); } 

  2. 接口FileRepository ,它擴展具有方法commitData(),fileNames()的BaseRepository,即

     public interface FileRepository extends BaseRepository{ public void commitData(); public List fileNames(); } 

  3. 接口ObjectRepository擴展了BaseRepositoryFileRepository,其中沒有方法。

  4. 使用Java Reflection API,我嘗試獲取接口中定義的方法以進行進一步處理,但是獲取方法commitData 2次,即,下面的代碼將在控制台中給我2次commitData

     for(Method method : ObjectRepository.class.getMethods()){ System.out.println(method.getName()); } 

輸出為:

commitData RetrieveData sortByLength commitData文件名

我正在使用Java 1.6。

您可以使用Method :: getDeclaringClass()來區分它們。

for(Method method : ObjectRepository.class.getMethods()){
        System.out.println(method.getDeclaringClass() + " " + method.getName());
}

看到http://ideone.com/y3Djvf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM