web-dev-qa-db-ja.com

Javadocでメソッドを参照する方法

@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タグを正しくフォーマットする方法を知りません。

731
Jason S

JavaDocについての多くの情報は、標準ドックレット用の文書コメント仕様にあります。

{@link package.class#member label}

タグ(あなたが探しているもの)。ドキュメントからの対応する例は次のとおりです。

たとえば、これはgetComponentAt(int、int)メソッドを参照するコメントです。

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

参照されているメソッドが現在のクラスにある場合は、package.class部分を省略できます。


JavaDocに関するその他の便利なリンクは次のとおりです。

970
FrVaBe

Javadocドキュメントの @linkセクションの一般的な形式は です。

{@link package.class#member label}

同じクラスのメソッド:

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

プレーンテキストでmethodにリンクされたラベル - コードフォントではなく

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

ラベル

自動リファクタリングはラベルに影響を与えない可能性があります。 これには、メソッド、クラス、またはパッケージの名前変更が含まれます。メソッドシグネチャを変更する。

したがって、デフォルトとは異なるテキストが必要な場合は、ラベルonlyを指定してください。

たとえば、人間の言語からコードにリンクするとします。

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

または、上記の「一連のメソッド呼び出し」のように、デフォルトとは異なるテキストを含むコードサンプルからリンクすることもできます。ただし、APIが進化している間、これは脆弱になる可能性があります。

消去を入力して#member

メソッドシグネチャにパラメータ化された型が含まれている場合は、javadoc @linkでそれらの型の消去を使用してください。例えば:

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

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

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