[英]Java Reflection: Difference between getMethods() and getDeclaredMethods()
[英]getMethods Reflection API result is ambiguous with Interface
請看一下情況並提出如何刪除以下問題的建議。
我們有一個BaseRepository接口,該接口已經內置了commitData(),retrieveData(),sortByLength()方法。
public interface BaseRepository{ public void commitData(); public Object retrieveData(); public Object sortByLength(); }
接口FileRepository ,它擴展了具有方法commitData(),fileNames()的BaseRepository,即
public interface FileRepository extends BaseRepository{ public void commitData(); public List fileNames(); }
接口ObjectRepository擴展了BaseRepository和FileRepository,其中沒有方法。
使用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());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.