Он использует Reflection-API , чтобы определить, является ли метод наследуемым или нет.
getMethod()
возвращает унаследованные методы getDeclaredMathod()
возвращаетвсе методы
для дальнейших ссылок см. также Обнаружение членов класса
Пример, демонстрирующий использование API
public class Reflect extends ArrayList {
public static void main(String[] args) {
Reflect r = new Reflect();
r.dump();
}
private void dump() {
Method[] methods = this.getClass().getMethods();
Set<String> ms = new HashSet<String>();
for ( Method m : methods ) {
ms.add( m.getName() );
}
Method[] declMethods = this.getClass().getDeclaredMethods();
Set<String> ds = new HashSet<String>();
for ( Method m : declMethods ) {
ds.add( m.getName() );
}
for ( String name : ms ) {
System.out.println(name + " is inherited =" +! ds.contains(name));
}
}
}