2012-01-18 105 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

我不我认为这回答了它。问题是“方法摘要”部分中的一些方法实际上是从ArrayList API中的超类继承的。那么,为什么这些不在“继承自”部分呢?有人可能会说“方法摘要”方法会覆盖超类的版本,但“继承自”部分的一些方法也会覆盖超类版本。 – john 2012-01-18 23:36:51