2009-07-04 13 views

Respuesta

22

De acuerdo con la javadoc documentation:

La herencia de los comentarios se produce en todos los tres posibles casos de herencia de clases e interfaces:

  • Cuando un método en una clase se impone a una método en una superclase
  • Cuando un método en una interfaz anula un método en una superinterfaz
  • Cuando un método en una clase implementa un método en una interfaz

comentarios pueden ser heredados explícitamente usando la etiqueta {@inheritDoc}. Si no se proporcionan comentarios para un método de anulación, los comentarios se heredarán implícitamente. Los aspectos de los comentarios heredados (por ejemplo, params, valor de retorno, etc.) pueden anularse si así lo desea.

Es importante que se asegure de que el archivo de origen que contiene el código con el comentario que se va a heredar está disponible para la herramienta javadoc. Puede hacerlo utilizando la opción - sourcepath.

5

De the 1.4.2 Javadoc manual

Algoritmo de heredar Método Comentarios - Si un método no tener un comentario de documentación, o tiene una etiqueta {} @inheritDoc, la herramienta busca Javadoc para un comentario aplicable utilizando la siguiente algoritmo, el cual está diseñado para encontrar el comentario de documentación más específica aplicable, dando preferencia a las interfaces más superclases:

  1. mirada en cada interfaz implementada directamente (o extendida) en el orden en que aparecen después de la palabra i mplements (o extends) en la declaración del método. Usa el primer comentario de doc encontrado para este método.
  2. Si el paso 1 no pudo encontrar un comentario de documento, aplique de forma recursiva este algoritmo completo a cada interfaz implementada directamente (o extendida), en el mismo orden en que se examinaron en el paso 1.
  3. Si el paso 2 no pudo encontrar un documento comente y esta es una clase distinta de Object (no una interfaz): 1. Si la superclase tiene un comentario de doc para este método, úselo. 2. Si el paso 3a no pudo encontrar un comentario del documento, aplica de forma recursiva todo este algoritmo a la superclase.

creo (aunque podría estar equivocado) que este algoritmo básico todavía se aplica a Java 1.5 y 1.6 ... aunque en realidad sería tremendamente agradable de Sun a publicar un documento definitivo autónomo completo para cada versión del conjunto de herramientas ... Supongo que es una sobrecarga que simplemente no pueden pagar, al menos para un conjunto de herramientas gratuito.

Saludos. Keith.


Editar:

Aquí hay un ejemplo rápido y sucio.

Código

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... 

Produce file: /// 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

El documento de javadoc al que hice referencia en mi publicación es para el lanzamiento de J2SE 1.6. –

-2

Intercambiar @Override con javaDoc.

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

Eso no tiene ningún efecto en absoluto. – Bex

Cuestiones relacionadas