Wie man mit Javadoc einen @ Link zu einem Enum-Wert erstellt

120

Mit Javadoc 1.5 konnte ich keinen @link zu einem Aufzählungswert erstellen.

Was ich tun möchte, ist eine Aufzählung wie diese zu erstellen:

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
}

Und dann beziehen Sie sich auf den Javadoc für die Erde über einen Link wie diesen:

{@link Planet.EARTH}

Ich habe den {@link Planet#EARTH}Stil auch ausprobiert , aber ohne Erfolg.

Weiß jemand, ob das überhaupt machbar ist?

Christer Fahlgren
quelle

Antworten:

195

Der #Stil funktioniert bei mir:

{@link Planet#EARTH}

Der Schlüssel ist, dass das PlanetPaket importiert oder Planetvollständig qualifiziert sein muss - dh:

{@link com.yourpackage.Planet#EARTH}
Aperkins
quelle
Wie sfussenegger feststellte, übernimmt Eclipse den Import für Sie.
Aperkins
Danke beide Antworten hilfreich! Ich habe es mit der voll qualifizierten Referenz zum Laufen gebracht. Manchmal ist die Compilerausgabe nicht wirklich hilfreich, um das Problem zu ermitteln ...
Christer Fahlgren
3
Was ist, wenn Enum in Klasse A definiert ist und versucht wird, auf einen seiner Werte aus Javadoc der Klasse B zu verweisen? Ich habe weder A.Planet # EARTH noch A # Planet # EARTH für OpenJDK 1.6 Update 24 Javadoc gefunden, obwohl Eclipse weiß, dass es eine Deklaration im A.Planet # EARTH-Stil findet.
Stevo Slavić
Leider funktioniert das nicht, wenn Sie einen statischen Enum-Import haben. Zumindest in der Idee von Intellij gibt es keine Möglichkeit, eine statisch importierte Aufzählung in Javadoc zu verwenden, es sei denn, Sie verwenden den vollständig qualifizierten Aufzählungsnamen mit Paketen usw.
Dhblah
6

Ich benutze Eclipse, um dies zu überprüfen, aber

{@link Planet#EARTH}

Stil scheint zu funktionieren. Normalerweise bevorzuge ich es jedoch

@see Planet#EARTH

wie auch immer. Ich bin nicht sicher, was Eclipse zum Generieren von Javadoc verwendet, aber ich verwende JDK6. Trotzdem macht @see vielleicht den Trick für Sie.

sfussenegger
quelle
4
Ich mag, @seeaber manchmal braucht man Sonderfälle. Zum Beispiel haben meine Bestellungen eine isWithdrawn()Methode, und ich sage ausdrücklich@return true if the status of this order is equal to OrderStatus#WITHDRAWN, false otherwise
corsiKa
2

Solange es importiert wird, können Sie es verknüpfen (aber wenn Sie dies tun, macht IMO die Importe chaotisch - welche werden im Code verwendet und welche in Javadoc? Ich verwende nur den vollständig qualifizierten Namen).

Aber ja, Eclipse kann sich um alles und Standard kümmern

{@link Planet#EARTH}

funktioniert gut.

Wenn Sie Eclipse, Strg + Umschalt + O (auf dem PC) oder Cmd + Umschalt + O (auf dem Mac) verwenden, passen Sie Ihre Importe automatisch an (dies bedeutet, dass zusätzliche Importe nicht verwendet werden, werden sie entfernt und hinzugefügt alle Importe, die Sie benötigen).

Jack
quelle