Como @link para um valor de enumeração usando Javadoc

120

Usando o Javadoc 1.5, não consegui criar um @link para um valor de Enumeração.

O que eu gostaria de fazer é criar um Enum como este:

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
}

E, em seguida, consulte o Javadoc for Earth usando um link como este:

{@link Planet.EARTH}

Eu tentei o {@link Planet#EARTH}estilo também, mas sem sucesso.

Alguém sabe se isso é factível?

Christer Fahlgren
fonte

Respostas:

195

O #estilo funciona para mim:

{@link Planet#EARTH}

A chave é que o Planetpacote deve ser importado ou Planetdeve ser totalmente qualificado - ou seja:

{@link com.yourpackage.Planet#EARTH}
aperkins
fonte
Como observou sfussenegger, o Eclipse lida com a importação para você.
aperkins
Obrigado ambas as respostas úteis! Consegui fazer funcionar usando a referência totalmente qualificada. Às vezes, a saída do compilador não é realmente útil para determinar qual é o problema ...
Christer Fahlgren
3
E se enum for definido na classe A e alguém tentar referenciar um de seus valores a partir da classe B javadoc? Não encontrei nem o A.Planet # EARTH nem o A # Planet # EARTH para trabalhar com o OpenJDK 1.6 atualização 24 javadoc, embora o eclipse saiba encontrar declaração com o estilo A.Planet # EARTH.
Stevo Slavić
Infelizmente, isso não funciona se você tiver uma importação estática de enum. Pelo menos no IntelliJ IDEA não há nenhuma maneira de usar um enum estaticamente importado no javadoc, a menos que você use o nome enum totalmente qualificado com pacotes etc.
dhblah
6

Estou usando o Eclipse para verificar isso, mas

{@link Planet#EARTH}

estilo parece funcionar. No entanto, eu normalmente prefiro

@see Planet#EARTH

de qualquer forma. Não tenho certeza do que o Eclipse usa para gerar Javadoc, mas estou usando o JDK6. Ainda assim, talvez o @see faça o truque para você.

sfussenegger
fonte
4
Eu gosto, @seemas às vezes você precisa de casos especiais. Por exemplo, as minhas ordens têm um isWithdrawn()método, e eu especificamente dizer@return true if the status of this order is equal to OrderStatus#WITHDRAWN, false otherwise
corsiKa
2

Desde que seja importado, você pode vinculá-lo (mas, ao fazer isso, o IMO torna as importações confusas - quais são usadas no código e quais são no javadoc? Eu gosto de usar apenas o nome completo).

Mas sim, o Eclipse pode cuidar de tudo e padronizar

{@link Planet#EARTH}

funciona bem.

Se você estiver usando o Eclipse, Ctrl + Shift + O (no PC) ou Cmd + Shift + O (no Mac) ajustam automaticamente suas importações (isso significa que se você não tiver outras importações em uso, elas serão removidas, além de adicionar quaisquer importações necessárias).

Jack
fonte