una intellij ejemplo documentar documenta como codigo clase java eclipse documentation inheritdoc

intellij - javadoc pdf



El método de anulación de la documentación de Java no es Heredoc (3)

Del manual de Javadoc 1.4.2.

Algoritmo para heredar comentarios de métodos : si un método no tiene un comentario doc, o tiene una etiqueta {@inheritDoc}, la herramienta Javadoc busca un comentario aplicable utilizando el siguiente algoritmo, que está diseñado para encontrar el comentario doc más específico aplicable. dando preferencia a las interfaces sobre las superclases:

  1. Busque en cada interfaz directamente implementada (o extendida) en el orden en que aparecen después de los implementos de palabras (o extensión) en la declaración del método. Usa el primer comentario doc para este método.
  2. Si el paso 1 no pudo encontrar un comentario doc, aplique recursivamente este algoritmo completo a cada interfaz directamente implementada (o extendida), en el mismo orden en que fueron examinados en el paso 1.
  3. Si el paso 2 no pudo encontrar un comentario de documento y esta es una clase diferente a Objeto (no una interfaz): 1. Si la superclase tiene un comentario de documento para este método, utilícelo. 2. Si el paso 3a no pudo encontrar un comentario doc, aplique recursivamente 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 sería realmente agradable para Sun publicar un documento definitivo completo e independiente para cada versión del conjunto de herramientas ... Supongo que es una sobrecarga que simplemente no pueden pagar, al menos por un conjunto de herramientas gratis.

Aclamaciones. 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 el archivo: /// 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

Un método que reemplaza a otro método no hereda la documentación del método que está anulando. ¿Hay alguna forma de decirle explícitamente que herede la documentación?

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


Intercambia @Override con javaDoc.

@Override /** * {@inheritDoc} */


Según la documentación de javadoc :

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

  • Cuando un método en una clase anula un 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

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

Es importante destacar que debe asegurarse 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. Puedes hacer esto usando la opción - sourcepath .