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.