java getMethods反射API结果与接口不明确
请查看该场景,并建议如何删除以下问题
我们有一个接口BaseRepository,它已经内置了一个方法commitData()、retrieveData()和sortByLength()
public interface BaseRepository{ public void commitData(); public Object retrieveData(); public Object sortByLength(); }
接口FileRepository扩展了BaseRepository的方法commitData(),fileNames(),即
public interface FileRepository extends BaseRepository{ public void commitData(); public List fileNames(); }
接口ObjectRepository,它扩展了BaseRepository和FileRepository,其中没有任何方法
使用Java反射API,我尝试获取接口中定义的方法以进行进一步处理,但是获取方法commitData 2次,即下面的代码段将在控制台中提供2次commitData
for(Method method : ObjectRepository.class.getMethods()){ System.out.println(method.getName()); }
输出为:
commitData retrieveData sortByLength commitData fileNames
我正在使用Java1.6
# 1 楼答案
您可以使用Method::getDeclaringClass()来区分它们
见http://ideone.com/y3Djvf