Enlace Javadoc al método en otra clase


238

Actualmente estoy haciendo referencia a métodos en otras clases con esta sintaxis Javadoc:

@see {@link com.my.package.Class#method()}

Y en lo que entiendo de la documentación, esta es la forma correcta de hacerlo. Pero ahora a la parte divertida, o frustrante. Cuando genero este javadoc, en primer lugar obtengo el siguiente error:

warning - Tag @see:illegal character: "123" in "{@link com.my.package.Class#method()}"
warning - Tag @see:illegal character: "64" in "{@link com.my.package.Class#method()}"
warning - Tag @see: reference not found: {@link com.my.package.Class#method()}

El código HTML generado de esto es:

"," <code>com.my.package.Class#method()}</code> ","

Y por supuesto no tengo enlace. ¿Alguien puede decirme qué está pasando y alguna pista sobre cómo solucionar esto?

De acuerdo con la tabla ASCII, los caracteres 123 y 64 para wold representan {y @, entonces, ¿por qué estos caracteres no son válidos cuando esta sintaxis es correcta de acuerdo con la documentación?


1
Solo para verificar ... ¿ha leído la documentación del Generador Javadoc? docs.oracle.com/javase/7/docs/technotes/tools/windows/…
— Diogo Moreira

¿Importó com.my.package.Classen la clase este JavaDoc está escrito? La referencia no encontrada parece extraña. Por otra parte, nunca he utilizado los combinaron pero hay una posibilidad de que @seey @linken conflicto entre sí, teniendo que @seegenera su propia seciton no me sorprendería.
— Fritz

1
@DiogoMoreira - No, no he leído sobre el motor, pero lo comprobaré.
— Robert

@Gamb: por supuesto, no es mi entrada real de Javadoc ;-) Sí, todas las importaciones están en su lugar.
— Robert

1
Se produce un error similar si coloca un hipervínculo sin formato como valor para la @seeetiqueta en su javadoc. Para solucionarlo en este caso, envuelva el hipervínculo en un elemento de anclaje html:/** @see <a href="http://example.com">Example</a> */
— cyber-monk

Respuestas:


280

Para la etiqueta Javadoc @see, no necesita usar @link; Javadoc creará un enlace para usted. Tratar

@see com.my.package.Class#method()

Aquí hay más información sobre @see.


Gracias por esto, ¡acabo de probar esta solución y funciona bien! Pero he leído en tantos lugares que debería usar el enlace en ver para que esto funcione, así que es un poco extraño ...
— Robert

77
Se puede utilizar @linken otros lugares que Javadoc aún no se convierta en un enlace, por ejemplo, en la descripción de @param, en la descripción de @return, en la parte principal de la descripción, etc
— rgettman

1
cuando acabo de probar esto, muestra el método como texto sin formato en el que no se puede hacer clic como mi @see para un método local.
— JesseBoyd

146

Aparte de @see, una forma más general de referirse a otra clase y posiblemente método de esa clase es {@link somepackage.SomeClass#someMethod(paramTypes)}. Esto tiene la ventaja de ser utilizable en medio de una descripción de javadoc.

De la documentación de javadoc (descripción de la etiqueta @link) :

Esta etiqueta es muy similar a @see: ambas requieren las mismas referencias y aceptan exactamente la misma sintaxis para package.class # member y label. La principal diferencia es que {@link} genera un enlace en línea en lugar de colocar el enlace en la sección "Ver también". Además, la etiqueta {@link} comienza y termina con llaves para separarla del resto del texto en línea.


68

Entonces, la solución al problema original es que no necesita las referencias "@see" y "{@link ...}" en la misma línea. La etiqueta "@link" es autosuficiente y, como se señaló, puede colocarla en cualquier lugar del bloque javadoc. Entonces puedes mezclar los dos enfoques:

/**
 * some javadoc stuff
 * {@link com.my.package.Class#method()}
 * more stuff
 * @see com.my.package.AnotherClass
 */

44
Esta respuesta debe aceptarse porque otras dos respuestas no muestran que '@link' o '@see' deben estar en comentarios de varias filas / ** * / no en una sola fila
— Stoycho Andreev

1
@Sniper, {@link }funciona bien en un comentario Javadoc de una sola fila, ¿te estás refiriendo al hecho de que no funcionan con comentarios que comienzan //? /** */es Javadoc y es necesario para cualquier función Javadoc.
— Jase

Sí @Jase Conocí exactamente esto, el comentario debe ser / ** * /, pero no //
— Stoycho Andreev

66
@ Francotirador No creo que sea necesario que esta sea la respuesta aceptada porque, para empezar, esta es una pregunta de Javadoc; en general, debe entenderse que Javadoc solo funciona en los comentarios de Javadoc.
— Jase

@Jase está de acuerdo con usted, pero creo que la fuente de información como Stackoverflow necesita explicaciones con ejemplos, no citas de la documentación de Oracle o alguna otra documentación, lo que obviamente no está claro. Esta respuesta es la única respuesta que tiene un ejemplo, arriba de dos respuestas hay citas.
— Stoycho Andreev
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.