Comment @lien vers une valeur Enum à l'aide de Javadoc

121

En utilisant Javadoc 1.5, je n'ai pas pu créer un @link vers une valeur d'énumération.

Ce que je voudrais faire, c'est créer un Enum comme celui-ci:

public enum Planet { 

/**
* MERCURY is a fun place.
*/
MERCURY, 

/**
* VENUS is more fun.
*/
VENUS, 

/**
* But nothing beats the Earth.
*/
EARTH,

/**
* Others we know nothing about.
*/ 
OTHERS
}

Et puis référez-vous au Javadoc for Earth en utilisant un lien comme celui-ci:

{@link Planet.EARTH}

J'ai essayé le {@link Planet#EARTH} style aussi, mais en vain.

Quelqu'un sait-il si c'est faisable?

Christer Fahlgren
la source

Réponses:

197

Le #style fonctionne pour moi:

{@link Planet#EARTH}

La clé est que le Planetpackage doit être importé ou Planetdoit être pleinement qualifié - c'est-à-dire:

{@link com.yourpackage.Planet#EARTH}
aperkins
la source
Comme l'a noté sfussenegger, Eclipse gère l'importation pour vous.
aperkins
Merci les deux réponses utiles! Je l'ai fait fonctionner en utilisant la référence pleinement qualifiée. Parfois, la sortie du compilateur n'est pas vraiment utile pour déterminer quel est le problème ...
Christer Fahlgren
3
Que faire si enum est défini dans la classe A et que l'on essaie de référencer l'une de ses valeurs à partir de la classe B javadoc? Je n'ai trouvé ni A.Planet # EARTH ni A # Planet # EARTH fonctionnant pour OpenJDK 1.6 update 24 javadoc, bien qu'eclipse sache trouver une déclaration avec le style A.Planet # EARTH.
Stevo Slavić
Malheureusement, cela ne fonctionne pas si vous avez une importation statique d'énumération. Au moins dans l'idée intellij, il n'y a aucun moyen d'utiliser une énumération importée statiquement dans javadoc, sauf si vous utilisez le nom enum complet avec des packages, etc.
dhblah
6

J'utilise Eclipse pour vérifier cela, mais

{@link Planet#EARTH}

le style semble fonctionner. Cependant, je préfère normalement

@see Planet#EARTH

en tous cas. Je ne sais pas ce qu'Eclipse utilise pour générer Javadoc, mais j'utilise JDK6. Pourtant, peut-être que @see fait l'affaire pour vous.

sfussenegger
la source
4
J'aime @seemais parfois vous avez besoin de cas particuliers. Par exemple, mes commandes ont une isWithdrawn()méthode, et je dis spécifiquement@return true if the status of this order is equal to OrderStatus#WITHDRAWN, false otherwise
corsiKa
2

Tant qu'il est importé, vous pouvez le lier (mais quand vous faites cela, l'OMI, cela rend les importations désordonnées - quels sont ceux qui sont utilisés dans le code et lesquels dans javadoc? J'aime simplement utiliser le nom complet).

Mais oui, Eclipse peut s'occuper de tout et standard

{@link Planet#EARTH}

fonctionne très bien.

Si vous utilisez Eclipse, Ctrl + Maj + O (sur PC) ou Cmd + Maj + O (sur Mac) ajustez automatiquement vos importations (cela signifie que si vous avez des importations supplémentaires non utilisées, elles sont supprimées, ainsi que l'ajout toutes les importations dont vous avez besoin).

Jack
la source