Javadoc методы и унаследованные методы - PullRequest
0 голосов
/ 18 января 2012

Почему в javadoc есть отдельный раздел для унаследованных методов? Например, в LinkedList http://docs.oracle.com/javase/1.5.0/docs/api/java/util/LinkedList.html, есть раздел «Сводка метода» и раздел для унаследованных методов, например «Методы, унаследованные от интерфейса java.util.List». Некоторые из методов в Сводке методов наследуются от других классов, так почему же этот отдельный раздел? Как Javadoc решает, какие методы поместить в Сводку методов, а какие в унаследованный раздел (даже если метод в Сводке методов наследуется)?

1 Ответ

1 голос
/ 18 января 2012

Он использует 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));
        }

    }
}
...