link - javadoc教學




如何引用javadoc中的方法? (2)

你可以使用@see來做到這一點:

樣品:

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

如何使用@link標記鏈接到方法?

我想改變

/**
 * 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()

/**
 * 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()

但我不知道如何正確格式化@link標記。


來自javadoc文檔@link部分的一般格式是:

例子

同一班級的方法:

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

方法在不同的類中,可以在同一個包中或導入:

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

方法在不同的包中並且未導入:

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

標籤鏈接到方法,以純文本而不是代碼字體:

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

方法調用鏈,就像你的問題一樣。 我們必須為這個類以外的方法指定標籤,或者我們得到getFoo().Foo.getBar().Bar.getBaz() 。 但是這些標籤可能很脆弱; 請參閱下面的“標籤”。

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

標籤

自動重構可能不會影響標籤。 這包括重命名方法,類或包; 並更改方法簽名。

因此, 當您需要與默認不同的文本時才提供標籤。

例如,您可能會從人類語言鏈接到代碼:

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

或者,您可以從代碼示例中鏈接不同於缺省值的文本,如上面的“方法調用鏈”所示。 但是,當API不斷發展時,這可能會變得很脆弱。

類型擦除和#成員

如果方法簽名包含參數化類型,請使用javadoc @link中的這些類型的擦除。 例如:

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

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




javadoc