Cómo @enlazar a un valor de enumeración usando Javadoc

121

Usando Javadoc 1.5, no he podido crear un @link a un valor de enumeración.

Lo que me gustaría hacer es crear una enumeración como esta:

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
}

Y luego consulte el Javadoc para la Tierra usando un enlace como este:

{@link Planet.EARTH}

También probé el {@link Planet#EARTH}estilo, pero fue en vano.

¿Alguien sabe si esto es factible?

Christer Fahlgren
fuente

Respuestas:

197

El #estilo me funciona:

{@link Planet#EARTH}

La clave es que el Planetpaquete debe ser importado o Planetdebe estar completamente calificado, es decir:

{@link com.yourpackage.Planet#EARTH}
aperkins
fuente
Como señaló sfussenegger, Eclipse maneja la importación por usted.
aperkins
Gracias, ambas respuestas son útiles. Lo hice funcionar usando la referencia totalmente calificada. A veces, la salida del compilador no es realmente útil para determinar cuál es el problema ...
Christer Fahlgren
3
¿Qué pasa si enum se define dentro de la clase A y uno está tratando de hacer referencia a uno de sus valores de la clase B javadoc? No he encontrado que A.Planet # EARTH ni A # Planet # EARTH funcionen para OpenJDK 1.6 update 24 javadoc, aunque eclipse sabe encontrar una declaración con el estilo A.Planet # EARTH.
Stevo Slavić
Desafortunadamente, eso no funciona si tiene una importación estática de enum. Al menos en la idea de intellij, no hay forma de usar una enumeración importada estáticamente en javadoc, a menos que use el nombre de enumeración completo con paquetes, etc.
dhblah
6

Estoy usando Eclipse para verificar esto, pero

{@link Planet#EARTH}

el estilo parece funcionar. Sin embargo, normalmente prefiero

@see Planet#EARTH

de todas formas. No estoy seguro de qué usa Eclipse para generar Javadoc, pero estoy usando JDK6. Aún así, tal vez @see haga el truco por ti.

sfussenegger
fuente
4
Me gusta @seepero a veces necesitas casos especiales. Por ejemplo, mis pedidos tienen un isWithdrawn()método, y digo específicamente@return true if the status of this order is equal to OrderStatus#WITHDRAWN, false otherwise
corsiKa
2

Siempre que sea importado, puede vincularlo (pero cuando hace esto, IMO hace que las importaciones sean desordenadas: ¿qué se usan en el código y cuáles en javadoc? Me gusta usar el nombre completo).

Pero sí, Eclipse puede encargarse de todo y de forma estándar

{@link Planet#EARTH}

funciona bien.

Si usa Eclipse, Ctrl + Shift + O (en PC) o Cmd + Shift + O (en Mac) ajuste automáticamente sus importaciones (esto significa que si tiene importaciones adicionales que no se están utilizando, se eliminan, además de agregar cualquier importación que necesite).

Jack
fuente