Tautan Javadoc ke metode di kelas lain


238

Saat ini saya sedang merujuk metode di kelas lain dengan sintaks Javadoc ini:

@see {@link com.my.package.Class#method()}

Dan dalam apa yang saya mengerti dari dokumentasi ini adalah cara yang benar untuk melakukan ini. Tapi sekarang ke bagian yang lucu, atau membuat frustrasi. Ketika saya menghasilkan javadoc ini, saya pertama-tama mendapatkan kesalahan berikut:

warning - Tag @see:illegal character: "123" in "{@link com.my.package.Class#method()}"
warning - Tag @see:illegal character: "64" in "{@link com.my.package.Class#method()}"
warning - Tag @see: reference not found: {@link com.my.package.Class#method()}

Kode HTML yang dihasilkan dari ini adalah:

"," <code>com.my.package.Class#method()}</code> ","

Dan tentu saja saya tidak punya tautan. Adakah yang bisa memberi tahu saya apa yang terjadi, dan ada petunjuk tentang cara memperbaikinya?

Menurut tabel ASCII karakter 123 dan 64 untuk wold mewakili {dan @, jadi mengapa karakter ini tidak valid ketika sintaks ini benar sesuai dengan dokumentasi?


1
Hanya untuk memeriksa ... apakah Anda sudah membaca dokumentasi Javadoc Generator? docs.oracle.com/javase/7/docs/technotes/tools/windows/…
Diogo Moreira

Apakah Anda mengimpor com.my.package.Classdi kelas ini JavaDoc ditulis? The referensi tidak ditemukan tampaknya aneh. Di sisi lain, saya tidak pernah menggunakan keduanya, tetapi ada kemungkinan bahwa @seedan @linkbertentangan satu sama lain, mengambil yang @seemenghasilkan bagian sendiri itu tidak akan mengejutkan saya.
Fritz

1
@DiogoMoreira - Tidak, saya belum membaca tentang mesin, tapi saya akan memeriksanya.
Robert

@Gamb - Tentu saja itu bukan input Javadoc saya yang sebenarnya ;-) Ya semua impor sudah ada.
Robert

1
Kesalahan serupa terjadi jika Anda meletakkan hyperlink mentah sebagai nilai untuk @seetag di javadoc Anda. Untuk memperbaikinya dalam hal ini bungkus hyperlink dalam elemen jangkar html:/** @see <a href="http://example.com">Example</a> */
cyber-monk

Jawaban:


280

Untuk tag Javadoc @see, Anda tidak perlu menggunakan @link; Javadoc akan membuat tautan untuk Anda. Mencoba

@see com.my.package.Class#method()

Inilah info lebih lanjut tentang @see.


Terima kasih untuk ini, saya baru saja menguji solusi ini dan ini berfungsi dengan baik! Tetapi saya telah membaca di banyak tempat sehingga Anda harus menggunakan tautan untuk memastikan ini berfungsi, jadi itu agak aneh ...
Robert

7
Anda dapat menggunakan @linkdi tempat lain bahwa Javadoc belum berubah menjadi tautan, misalnya dalam deskripsi untuk @param, dalam deskripsi untuk @return, di bagian utama deskripsi, dll.
rgettman

1
ketika saya baru mencoba ini menampilkan metode sebagai teks biasa tidak dapat diklik seperti @ saya untuk metode lokal.
JesseBoyd

146

Selain itu @see, cara yang lebih umum untuk merujuk ke kelas lain dan mungkin metode kelas itu adalah {@link somepackage.SomeClass#someMethod(paramTypes)}. Ini bermanfaat digunakan di tengah deskripsi javadoc.

Dari dokumentasi javadoc (deskripsi tag @link) :

Tag ini sangat mirip dengan @see - keduanya membutuhkan referensi yang sama dan menerima sintaks yang persis sama untuk package.class # member dan label. Perbedaan utama adalah bahwa {@link} menghasilkan tautan in-line daripada menempatkan tautan di bagian "Lihat Juga". Tag {@link} juga dimulai dan diakhiri dengan kurung kurawal untuk memisahkannya dari sisa teks in-line.


68

Jadi solusi untuk masalah aslinya adalah Anda tidak memerlukan referensi "@see" dan "{@link ...}" di baris yang sama. Tag "@link" swasembada dan, seperti disebutkan, Anda dapat meletakkannya di mana saja di blok javadoc. Jadi, Anda dapat mencampur dua pendekatan:

/**
 * some javadoc stuff
 * {@link com.my.package.Class#method()}
 * more stuff
 * @see com.my.package.AnotherClass
 */

4
Ini harus diterima jawaban karena dua jawaban lainnya tidak menunjukkan bahwa '@link' atau '@see' harus dalam komentar baris ganda / ** * / bukan baris tunggal
Stoycho Andreev

1
@Sniper, {@link }berfungsi dengan baik dalam komentar Javadoc baris tunggal, apakah Anda mungkin merujuk pada fakta bahwa mereka tidak bekerja dengan komentar yang dimulai dengan //? /** */adalah Javadoc dan diperlukan untuk fungsi Javadoc.
Jase

Ya @Jase saya bertemu persis ini, komentarnya harus / ** * /, tetapi tidak //
Stoycho Andreev

6
@Sniper Saya tidak berpikir bahwa mengharuskan ini menjadi jawaban yang diterima karena ini adalah pertanyaan Javadoc untuk memulai - harus dipahami secara umum bahwa Javadoc hanya berfungsi dalam komentar Javadoc.
Jase

@Jase agak setuju dengan Anda, tetapi saya percaya bahwa sumber informasi seperti Stackoverflow perlu penjelasan dengan contoh tidak mengutip dari dokumentasi Oracle atau dokumentasi lain, yang tidak jelas jelas. Jawaban ini adalah satu-satunya jawaban yang memiliki contoh, dua jawaban di atas adalah kutipan.
Stoycho Andreev
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.