Javadoc'ta bir yönteme nasıl başvurulur?


864

@linkEtiketi bir yönteme bağlamak için nasıl kullanabilirim ?

Değiştirmek istiyorum:

/**
 * Returns the Baz object owned by the Bar object owned by Foo owned by this.
 * A convenience method, equivalent to getFoo().getBar().getBaz()
 * @return baz
 */
public Baz fooBarBaz()

için:

/**
 * Returns the Baz object owned by the Bar object owned by Foo owned by this.
 * A convenience method, equivalent to {@link getFoo()}.{@link getBar()}.{@link getBaz()}
 * @return baz
 */
public Baz fooBarBaz()

ancak @linketiketi doğru şekilde nasıl biçimlendireceğimi bilmiyorum .


22
Bunun birkaç yıl önce olduğunu biliyorum ama ... resmi Java sınıflarına bakmak, ihtiyacınız olan herhangi bir Javadoc formatını bulmanıza yardımcı olabilir. Örneğin HashMap Javadoc'a bakın.
Christophe Roussy

Yanıtlar:


1122

JavaDoc hakkında Standart Dokümanın Dokümantasyon Açıklaması Spesifikasyonunda ,

{@link package.class # üye etiketi}

etiketi (aradığınız). Belgelerdeki ilgili örnek aşağıdaki gibidir

Örneğin, getComponentAt (int, int) yöntemine başvuran bir yorum:

Use the {@link #getComponentAt(int, int) getComponentAt} method.

Belirtilen package.classyöntem geçerli sınıftaysa, parça ommite edilebilir.


JavaDoc ile ilgili diğer faydalı bağlantılar:


743

Javadoc belgelerinin @link bölümündeki genel biçim şöyledir:

{@link package.class # üye etiketi}

Örnekler

Aynı sınıfta yöntem:

/** See also {@link #myMethod(String)}. */
void foo() { ... }

Aynı paketteki veya içe aktarılan farklı bir sınıftaki yöntem :

/** See also {@link MyOtherClass#myMethod(String)}. */
void foo() { ... }

Farklı bir paketteki ve içe aktarılmayan yöntem :

/** See also {@link com.mypackage.YetAnotherClass#myMethod(String)}. */
void foo() { ... }

Yönteme bağlı etiket, kod yazı tipi yerine düz metin olarak etiketlendi :

/** See also this {@linkplain #myMethod(String) implementation}. */
void foo() { ... }

Sorunuzda olduğu gibi bir yöntem zinciri çağırır . Bu sınıfın dışındaki yöntemlere bağlantılar için etiketler belirtmeliyiz, yoksa alırız getFoo().Foo.getBar().Bar.getBaz(). Ancak bu etiketler kırılgan olabilir; aşağıdaki "Etiketler" e bakın.

/**
 * A convenience method, equivalent to 
 * {@link #getFoo()}.{@link Foo#getBar() getBar()}.{@link Bar#getBaz() getBaz()}.
 * @return baz
 */
public Baz fooBarBaz()

Etiketler

Otomatik yeniden düzenleme etiketleri etkilemeyebilir. Buna yöntemin, sınıfın veya paketin yeniden adlandırılması; ve yöntem imzasını değiştirme.

Bu nedenle, yalnızca varsayılandan farklı bir metin istiyorsanız bir etiket sağlayın .

Örneğin, insan dilinden koda bağlantı oluşturabilirsiniz:

/** You can also {@linkplain #getFoo() get the current foo}. */
void setFoo( Foo foo ) { ... }

Veya bir kod örneğinden, yukarıda "Yöntem çağrısı zinciri" altında gösterildiği gibi varsayılandan farklı bir metinle bağlantı oluşturabilirsiniz. Bununla birlikte, API'lar gelişirken kırılgan olabilir.

Silme ve # üye yazın

Yöntem imzasında parametreli türler varsa, javadoc @link içindeki bu türlerin silinmesini kullanın. Örneğin:

int bar( Collection<Integer> receiver ) { ... }

/** See also {@link #bar(Collection)}. */
void foo() { ... }

Bekle: Sadece bir bağlantı ile yöntem adı istiyorum, sınıf adını da istemiyorum.
Jason S

Ah tamam. Yukarıdaki bağlantıdaki ilk örnek bunu göstermektedir.
Andy Thomas

1
Oracle JavaDoc HowTo sayfasından bağlanmadığım bir Java 6 bağlantısı sağlamak için +1. Hala oracle linkleri ile anlaşamıyorum ... (cevabımda Java 6'ya sabit bağlantılar).
FrVaBe


@ Paŭlo Ebermann Teşekkürler! Gelecekte 'dokümanlar' sayfasını giriş noktası olarak kullanmaya çalışacaktır.
FrVaBe

16

bunu @seeyapmak için kullanabilirsiniz :

örneklem:

interface View {
        /**
         * @return true: have read contact and call log permissions, else otherwise
         * @see #requestReadContactAndCallLogPermissions()
         */
        boolean haveReadContactAndCallLogPermissions();

        /**
         * if not have permissions, request to user for allow
         * @see #haveReadContactAndCallLogPermissions()
         */
        void requestReadContactAndCallLogPermissions();
    }

4
OP: "@link etiketini bir yönteme bağlamak için nasıl kullanabilirim?" @Link OP talep ettiği etiketi, bir paragraf içinde kullanılan satır içi olabilir. @See etiketi olamaz. Bu soruda daha fazla ayrıntı görün .
Andy Thomas
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.