web-dev-qa-db-fra.com

Lien Javadoc à la méthode dans une autre classe

Actuellement, je référence des méthodes dans d'autres classes avec cette syntaxe Javadoc:

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

Et d'après ce que je comprends de la documentation, c'est la bonne façon de procéder. Mais maintenant à la partie drôle, ou frustrant. Lorsque je génère ce javadoc, je reçois d’abord l’erreur suivante:

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()}

Le code HTML généré est:

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

Et bien sûr je n'ai pas de lien. Quelqu'un peut-il me dire ce qui se passe et des conseils pour résoudre ce problème?

Selon la table ASCII, les caractères 123 et 64 de wold représentent {et @, alors pourquoi ces caractères ne sont-ils pas valides alors que cette syntaxe est correcte, conformément à la documentation?

205
Robert

Pour la balise Javadoc @see, vous n'avez pas besoin d'utiliser @link; Javadoc va créer un lien pour vous. Essayer

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

Plus d’informations sur @see.

242
rgettman

En plus de @see, une méthode plus générale de référence à une autre classe et éventuellement à une méthode de cette classe est {@link somepackage.SomeClass#someMethod(paramTypes)}. Cela a l'avantage d'être utilisable au milieu d'une description javadoc.

De la documentation javadoc (description de la balise @link) :

Cette balise est très similaire à @see - les deux nécessitent les mêmes références et acceptent exactement la même syntaxe pour package.class # member et label. La principale différence est que {@link} génère un lien en ligne plutôt que de le placer dans la section "Voir aussi". En outre, la balise {@link} commence et se termine par des accolades pour la séparer du reste du texte en ligne.

131
Javarome

La solution au problème initial est donc que vous n'avez pas besoin des références "@see" et "{@link ...}" sur la même ligne. La balise "@link" est autonome et, comme indiqué, vous pouvez la placer n'importe où dans le bloc javadoc. Ainsi, vous pouvez mélanger les deux approches:

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