请查看该方案,并建议如何删除以下问题。
我们有一个接口 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 Reflection API我尝试在接口中定义方法以进行进一步处理,但是获取方法commitData 2次,即在代码片段之后将在控制台中给出2次commitData
for(Method method : ObjectRepository.class.getMethods()){
System.out.println(method.getName());
}
输出是:
commitData retrieveData sortByLength commitData fileNames
我正在使用Java 1.6。
答案 0 :(得分:0)
您可以使用Method::getDeclaringClass()来区分它们。
for(Method method : ObjectRepository.class.getMethods()){
System.out.println(method.getDeclaringClass() + " " + method.getName());
}