2012-01-18 41 views
0

javadocでは、継承されたメソッドのセクションが別々にあるのはなぜですか?たとえば、LinkedListのhttp://docs.oracle.com/javase/1.5.0/docs/api/java/util/LinkedList.htmlには、「メソッドの概要」セクションと継承されたメソッドのセクション(「java.util.Listから継承したメソッド」など)があります。メソッドサマリーのメソッドのいくつかは他のクラスから継承されているので、なぜこの別のセクションがあるのですか? javadocは、メソッド・サマリーのメソッドを継承する場合でも、メソッド・サマリーに入れるメソッドと継承したセクションに入れるメソッドをどのように決定するのですか?Javadocのメソッドと継承されたメソッド

答えて

1

Reflection-APIを使用して、メソッドが継承されているかどうかを判断します。

  • getMethod()戻っ継承されたメソッド
  • getDeclaredMathod()返しますさらなる参照のためのすべてのメソッド

Discovering Class Members

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)); 
     } 

    } 
} 
+1

Iドンこれがそれに答えるとは思わない。実際には、「メソッドの概要」セクションのメソッドのいくつかは、ArrayList APIのスーパークラスから実際に継承されています。では、なぜこれらは「継承された」セクションにないのですか? 「メソッドの概要」メソッドがスーパークラスのバージョンをオーバーライドすると主張できますが、「継承された」セクションのメソッドの一部はスーパークラスのバージョンをオーバーライドします。 – john

関連する問題