Diğer sınıftaki yönteme Javadoc bağlantısı


238

Şu anda bu Javadoc sözdizimi ile diğer sınıflardaki yöntemlere başvuruyorum:

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

Ve belgelerden anladığım kadarıyla bunu yapmanın doğru yolu bu. Ama şimdi komik kısım ya da sinir bozucu. Ben bu javadoc oluşturmak zaman öncelikle aşağıdaki hatayı olsun:

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()}

Bunun oluşturulan HTML kodu:

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

Ve tabii ki bağlantım yok. Biri bana neler olduğunu ve bunun nasıl düzeltileceğine dair ipuçları söyleyebilir mi?

ASCII tablo karakterlerine göre wold için 123 ve 64 karakterleri {ve @ temsil ediyor, bu yüzden bu sözdizimi belgelere göre doğru olduğunda bu karakterler neden geçerli değil?


1
Kontrol etmek için ... Javadoc Jeneratör belgelerini okudunuz mu? docs.oracle.com/javase/7/docs/technotes/tools/windows/…
Diogo Moreira

com.my.package.ClassBu JavaDoc yazıldığı sınıfta içe aktardınız mı? Bulunmayan referans tuhaf görünüyor. Öte yandan, ben onları kombine hiç kullanmadım ama bu bir şans var @seeve @linkçatışma birbirleriyle, yani alarak @seeo şaşırmam kendi seciton üretir.
Fritz

1
@DiogoMoreira - Hayır Motor hakkında bir şey okumadım, ama kontrol edeceğim.
Robert

@Gamb - Tabii ki bu benim gerçek Javadoc girdim değil ;-) Evet tüm ithalat yerinde.
Robert

1
@seeJavadoc'unuzdaki etiketin değeri olarak ham bir köprü koyarsanız benzer bir hata oluşur . Bu durumda düzeltmek için köprüyü bir html çapa öğesine sarın:/** @see <a href="http://example.com">Example</a> */
cyber-monk

Yanıtlar:


280

Javadoc etiketi @seeiçin kullanmanıza gerek yoktur @link; Javadoc sizin için bir link oluşturacaktır. Deneyin

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

İşte hakkında daha fazla bilgi @see.


Bunun için teşekkürler, sadece bu çözümü test ettim ve bu iyi çalışıyor! Ama o kadar çok yerde okudum ki, bu bağlantıyı çalıştırabilmek için bağlantıyı kullanmalısın, bu biraz garip ...
Robert

7
Sen kullanabilirsiniz @linkJavadoc zaten açıklamasında örneğin bir bağlantı, dönüşmez olduğu başka yerlerde @paramaçıklama alanına, @returnvb açıklaması, ana bölümünde,
rgettman

1
Bu sadece denediğimde yöntemi düz metin olarak görüntüler, yerel bir yöntem için benim @see gibi tıklanabilir değildir.
JesseBoyd

146

Bunun dışında @see, başka bir sınıfa ve muhtemelen o sınıfın yöntemine başvurmanın daha genel bir yolu{@link somepackage.SomeClass#someMethod(paramTypes)} . Bu, bir javadoc tanımının ortasında kullanılabilir olma avantajına sahiptir.

Gönderen Javadoc belgelerine (@link etiketinin açıklaması) :

Bu etiket @see için çok simliar - her ikisi de aynı referansları gerektirir ve package.class # member ve label için tam olarak aynı sözdizimini kabul eder. Temel fark, {@link} bağlantıyı "Ayrıca Bkz" bölümüne yerleştirmek yerine bir satır içi bağlantı oluşturmasıdır. Ayrıca, {@link} etiketi satır içi metnin geri kalanından ayırmak için süslü parantezlerle başlar ve biter.


68

Orijinal sorunun çözümü, aynı satırda hem "@see" hem de "{@link ...}" referanslarına gerek duymamanızdır. "@Link" etiketi kendi kendine yeterlidir ve belirtildiği gibi javadoc bloğunun herhangi bir yerine koyabilirsiniz. Böylece iki yaklaşımı karıştırabilirsiniz:

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

4
Bu cevap kabul edilmelidir, çünkü diğer iki cevap '@link' veya '@see' nin birden çok satırda yorum yapması gerektiğini göstermez / ** * / tek satır değil
Stoycho Andreev

1
@Sniper, {@link }tek satırlık bir Javadoc yorumunda iyi çalışıyor, belki de başlangıçtan itibaren yorumlarla çalışmadığından //mı bahsediyorsunuz ? /** */Javadoc'dur ve herhangi bir Javadoc işlevi için gereklidir.
Jase

Evet @Jase tam olarak bu yorum bir araya geldi yorum olmalı / ** * /, ama değil //
Stoycho Andreev

6
@Sniper Bunun bir kabul edilen cevap olmasını gerektirdiğini düşünmüyorum çünkü bu başlamak için bir Javadoc sorusu - genellikle Javadoc'un sadece Javadoc yorumlarında çalıştığı anlaşılmalıdır.
Jase

@Jase sizinle aynı fikirde olmakla birlikte, Stackoverflow gibi bilgi kaynağının, Oracle belgelerinden veya açık bir şekilde anlaşılmayan bazı diğer belgelerden alıntı yapmayan örneklerle açıklamalara ihtiyacı olduğuna inanıyorum. Bu cevap, örneği olan tek cevaptır, iki cevabın üstünde alıntı vardır.
Stoycho Andreev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.