Cara @ menautkan ke Nilai Enum menggunakan Javadoc

121

Menggunakan Javadoc 1.5, saya tidak dapat membuat @link ke nilai Enumerasi.

Yang ingin saya lakukan adalah membuat Enum seperti ini:

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
}

Dan kemudian lihat Javadoc untuk Earth menggunakan tautan seperti ini:

{@link Planet.EARTH}

Saya telah mencoba {@link Planet#EARTH}gayanya juga, tetapi tidak berhasil.

Adakah yang tahu apakah ini bisa dilakukan?

Christer Fahlgren
sumber

Jawaban:

197

The #gaya bekerja untuk saya:

{@link Planet#EARTH}

Kuncinya adalah bahwa Planetpaket tersebut harus diimpor, atau Planetharus sepenuhnya memenuhi syarat - yaitu:

{@link com.yourpackage.Planet#EARTH}
aperkins
sumber
Seperti yang dicatat sfussenegger, Eclipse menangani impor untuk Anda.
aperkins
Terima kasih, kedua jawaban membantu! Saya berhasil membuatnya bekerja menggunakan referensi yang memenuhi syarat. Terkadang keluaran kompiler tidak terlalu membantu dalam menentukan apa masalahnya ...
Christer Fahlgren
3
Bagaimana jika enum didefinisikan dalam kelas A dan seseorang mencoba untuk mereferensikan salah satu nilainya dari kelas B javadoc? Saya tidak menemukan A.Planet # EARTH atau A # Planet # EARTH berfungsi untuk OpenJDK 1.6 update 24 javadoc, meskipun eclipse tahu cara menemukan deklarasi dengan gaya A.Planet # EARTH.
Stevo Slavić
Sayangnya itu tidak berfungsi jika Anda memiliki impor statis enum. Setidaknya dalam ide intellij tidak ada cara untuk menggunakan enum yang diimpor secara statis di javadoc, kecuali Anda menggunakan nama enum yang sepenuhnya memenuhi syarat dengan paket, dll.
dhblah
6

Saya menggunakan Eclipse untuk memeriksa ini, tapi

{@link Planet#EARTH}

gaya tampaknya berhasil. Namun, biasanya saya lebih suka

@see Planet#EARTH

bagaimanapun. Tidak yakin apa yang digunakan Eclipse untuk menghasilkan Javadoc, tapi saya menggunakan JDK6. Tetap saja, mungkin @see berhasil untuk Anda.

sfussenegger.dll
sumber
4
Saya suka @seetapi terkadang Anda membutuhkan kasus khusus. Misalnya, pesanan saya memiliki isWithdrawn()metode, dan saya secara khusus mengatakan@return true if the status of this order is equal to OrderStatus#WITHDRAWN, false otherwise
corsiKa
2

Selama itu diimpor, Anda dapat menautkannya (tetapi ketika Anda melakukan ini, IMO itu membuat impor berantakan- apa yang digunakan dalam kode dan yang apa di javadoc? Saya suka hanya menggunakan nama yang memenuhi syarat).

Tapi ya, Eclipse bisa menangani semuanya dan standar

{@link Planet#EARTH}

bekerja dengan baik.

Jika Anda menggunakan Eclipse, Ctrl + Shift + O (di PC) atau Cmd + Shift + O (di Mac) secara otomatis menyesuaikan impor Anda (ini berarti jika Anda memiliki impor tambahan yang tidak digunakan, impor tersebut dihapus, serta menambahkan impor apa pun yang Anda butuhkan).

Mendongkrak
sumber