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?
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()
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.
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
*/