2009-07-04 113 views
16

覆蓋另一個方法的方法不會繼承它正在覆蓋的方法的文檔。有什麼辦法可以明確告訴它繼承文檔嗎?Java文檔覆蓋方法不會繼承DOD

/** 
    * {@inheritDoc} 
    * 
    * This implementation uses a dynamic programming approach. 
    */ 
@Override 
public int[] a(int b) { 
    return null; 
} 

回答

22

按照javadoc documentation

繼承的評論發生在從類和接口繼承 的所有 三種可能的情況:

  • 當在一個類中的方法將重寫方法在超類中的方法
  • 當接口中的方法重寫超接口中的方法時
  • 在類中的方法在一個接口實現了一個方法

註釋可以使用{@inheritDoc}標籤明確地繼承。如果沒有爲覆蓋方法提供註釋,則註釋將被隱式繼承。如果你願意,繼承評論的方面(例如參數,返回值等)可以被忽略。

重要的是,您需要確保包含帶有要繼承的註釋的代碼的源文件可用於javadoc工具。您可以通過使用 - sourcepath選項來完成此操作。

5

the 1.4.2 Javadoc manual

算法傳承法點評 - 如果一個方法沒有一個文檔註釋,或有{} @inheritDoc標籤,使用下面的適用的評論Javadoc工具搜索算法,其目的是找到最適用的特定文檔註釋,優先考慮在接口超:

  1. 看在每個順序直接執行(或擴展)接口出現下列單詞我方法聲明中的補充(或擴展)。使用爲此方法找到的第一個文檔評論。
  2. 如果第1步找不到文檔註釋,則按照與步驟1中檢查的順序相同的順序,將此整個算法遞歸應用於每個直接實現的(或擴展的)接口。
  3. 如果第2步找不到文檔註釋並且這是除Object以外的類(不是接口): 1.如果超類具有此方法的doc註釋,請使用它。 2.如果步驟3a找不到文檔註釋,則遞歸地將此整個算法應用於超類。

我相信(雖然我可能是錯的),這基本算法仍然適用於Java的1.5和1.6 ...雖然它真的會非常漂亮的太陽發佈一個完全獨立的權威文檔每個版本的工具集......我想這是一個他們無法承受的開銷,至少是一個免費的工具集。

乾杯。基思。


編輯:

這裏有一個快速和骯髒的例子。

代碼

package forums; 


interface Methodical 
{ 
    /** 
    * A no-op. Returns null. 
    * @param i int has no effect. 
    * @return int[] null. 
    */ 
    public int[] function(int i); 
} 


interface Methodological extends Methodical 
{ 
    /** 
    * Another no-op. Does nothing. 
    */ 
    public void procedure(); 
} 


class Parent implements Methodological 
{ 
    @Override 
    public int[] function(int i) { 
    return null; 
    } 

    @Override 
    public void procedure() { 
    // do nothing 
    } 

} 


class Child extends Parent 
{ 
    /** {@inheritDoc} */ 
    @Override 
    public int[] function(int i) { 
     return new int[0]; 
    } 

    /** {@inheritDoc} */ 
    @Override 
    public void procedure() { 
    System.out.println("I'm a No-op!"); 
    } 

} 


public class JavaDocTest 
{ 
    public static void main(String[] args) { 
    try { 
     new Child().procedure(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 

的Javadoc

C:\Java\home\src\forums>javadoc -package -sourcepath . JavaDocTest.java 
Loading source file JavaDocTest.java... 
Constructing Javadoc information... 
Standard Doclet version 1.6.0_12 
Building tree for all the packages and classes... 
Generating forums/\Child.html... 
Generating forums/\JavaDocTest.html... 
Generating forums/\Methodical.html... 
Generating forums/\Methodological.html... 
Generating forums/\Parent.html... 
Generating forums/\package-frame.html... 
Generating forums/\package-summary.html... 
Generating forums/\package-tree.html... 
Generating constant-values.html... 
Building index for all the packages and classes... 
Generating overview-tree.html... 
Generating index-all.html... 
Generating deprecated-list.html... 
Building index for all classes... 
Generating allclasses-frame.html... 
Generating allclasses-noframe.html... 
Generating index.html... 
Generating help-doc.html... 
Generating stylesheet.css... 

可生產文件:/// C:/Java/home/src/forums/index.html

function 

public int[] function(int i) 

    A no-op. Returns null. 

    Specified by: 
     function in interface Methodical 
    Overrides: 
     function in class Parent 

    Parameters: 
     i - int has no effect. 
    Returns: 
     int[] null. 

procedure 

public void procedure() 

    Another no-op. Does nothing. 

    Specified by: 
     procedure in interface Methodological 
    Overrides: 
     procedure in class Parent 
+0

我在文章中引用的javadoc文檔是針對J2SE 1.6版本的。 – 2009-07-04 04:02:55

-2

用javaDoc交換@Override。

@Override 
    /** 
    * {@inheritDoc} 
    */ 
+3

這沒有任何效果。 – Bex 2017-01-30 11:47:13