¿Cómo hacer referencia a un método en javadoc?

¿Cómo puedo usar el @link etiqueta para vincular a un método?

Quiero cambiar:

/**
 * Returns the Baz object owned by the Bar object owned by Foo owned by this.
 * A convenience method, equivalent to getFoo().getBar().getBaz()
 * @return baz
 */
public Baz fooBarBaz()

a:

/**
 * Returns the Baz object owned by the Bar object owned by Foo owned by this.
 * A convenience method, equivalent to {@link getFoo()}.{@link getBar()}.{@link getBaz()}
 * @return baz
 */
public Baz fooBarBaz()

pero no sé cómo formatear el @link etiquetar correctamente.

preguntado el 06 de mayo de 11 a las 16:05

Sé que esto fue hace unos años, pero ... mirar las clases oficiales de Java puede ayudarlo a encontrar cualquier forma de formato Javadoc que necesite. Por ejemplo, mire el HashMap Javadoc. -

3 Respuestas

Encontrará mucha información sobre JavaDoc en el Especificación de comentarios sobre la documentación para el doclet estándar, incluida la información sobre el

{@link package.class # member label}

etiqueta (que está buscando). El ejemplo correspondiente de la documentación es el siguiente

Por ejemplo, aquí hay un comentario que se refiere al método getComponentAt (int, int):

Use the {@link #getComponentAt(int, int) getComponentAt} method.

El package.class parte se puede omitir si el método referido está en la clase actual.


Otros enlaces útiles sobre JavaDoc son:

Respondido el 29 de Septiembre de 18 a las 06:09

El formato general, desde el sección @link de la documentación de javadoc, es:

{@link package.class # member label}

Ejemplos

Método en la misma clase:

/** See also {@link #myMethod(String)}. */
void foo() { ... }

Método en un clase diferente, ya sea en el mismo paquete o importado:

/** See also {@link MyOtherClass#myMethod(String)}. */
void foo() { ... }

Método en un paquete diferente y no importado:

/** See also {@link com.mypackage.YetAnotherClass#myMethod(String)}. */
void foo() { ... }

Etiqueta vinculada al método, en texto sin formato en lugar de fuente de código:

/** See also this {@linkplain #myMethod(String) implementation}. */
void foo() { ... }

Una cadena de llamadas a métodos, como en tu pregunta. Tenemos que especificar etiquetas para los enlaces a métodos fuera de esta clase, o obtenemos getFoo().Foo.getBar().Bar.getBaz(). Pero estas etiquetas pueden resultar frágiles durante la refactorización; consulte "Etiquetas" a continuación.

/**
 * A convenience method, equivalent to 
 * {@link #getFoo()}.{@link Foo#getBar() getBar()}.{@link Bar#getBaz() getBaz()}.
 * @return baz
 */
public Baz fooBarBaz()

Etiquetas

Es posible que la refactorización automatizada no afecte a las etiquetas. Esto incluye cambiar el nombre del método, clase o paquete; y cambiar la firma del método.

Por lo tanto, proporcione una etiqueta , solamente si desea un texto diferente al predeterminado.

Por ejemplo, puede vincular del lenguaje humano al código:

/** You can also {@linkplain #getFoo() get the current foo}. */
void setFoo( Foo foo ) { ... }

O puede vincular desde una muestra de código con texto diferente al predeterminado, como se muestra arriba en "Una cadena de llamadas a métodos". Sin embargo, esto puede resultar frágil mientras las API evolucionan.

Escriba borrado y #miembro

Si la firma del método incluye tipos parametrizados, utilice el borrado de esos tipos en el javadoc @link. Por ejemplo:

int bar( Collection<Integer> receiver ) { ... }

/** See also {@link #bar(Collection)}. */
void foo() { ... }

Respondido 03 Jul 20, 15:07

Espera: solo quiero el nombre del método con un enlace, no quiero el nombre de la clase también. - Jason S

Ah bien. El primer ejemplo en el enlace de arriba lo ilustra. - Andy Tomas

+1 por proporcionar un enlace de Java 6 al que no estaba vinculado desde la página Oracle JavaDoc HowTo. Todavía no puedo llevarme bien con los enlaces de Oracle ... (enlaces fijos a Java 6 en mi respuesta). - FrVaBe

@ Paŭlo Ebermann ¡Gracias! Intentará usar la página 'documentos' como punto de entrada en el futuro. - FrVaBe

puedes usar @see Para hacer eso:

muestra:

interface View {
        /**
         * @return true: have read contact and call log permissions, else otherwise
         * @see #requestReadContactAndCallLogPermissions()
         */
        boolean haveReadContactAndCallLogPermissions();

        /**
         * if not have permissions, request to user for allow
         * @see #haveReadContactAndCallLogPermissions()
         */
        void requestReadContactAndCallLogPermissions();
    }

Respondido el 12 de enero de 17 a las 02:01

OP: "¿Cómo puedo usar la etiqueta @link para vincular a un método?" El @enlace La etiqueta se puede usar en línea dentro de un párrafo, según lo solicite el OP. El @ver etiqueta no puede. Ver más detalles en esta pregunta. - Andy Tomas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.