他のクラスのメソッドへのJavadocリンク


238

現在、私はこのJavadoc構文で他のクラスのメソッドを参照しています:

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

そして、私がドキュメントから理解していることでは、これはこれを行う正しい方法です。しかし、今面白い部分、またはイライラします。このjavadocを生成すると、まず次のエラーが発生します。

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

これの生成されたHTMLコードは次のとおりです。

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

そしてもちろん私にはリンクがありません。誰が何が起こっているのか、そしてこれを修正する方法についてのヒントはありますか?

ASCIIテーブルによれば、woldの文字123および64は{および@を表すので、ドキュメントに従ってこの構文が正しい場合、これらの文字はなぜ有効ではないのでしょうか。


1
確認するだけ... Javadocジェネレータのドキュメントを読みましたか?docs.oracle.com/javase/7/docs/technotes/tools/windows/…–
Diogo Moreira

com.my.package.ClassこのJavaDocが記述されているクラスにインポートしましたか?参照が見つからない奇妙に思えます。一方、私はそれらを組み合わせて使用​​したことがありませんが、互いに競合する可能性が@seeあります。それが独自のセグメント@link@see生成するので、私は驚くことではありません。
フリッツ

1
@DiogoMoreira-いいえ、エンジンについては読んでいませんが、確認します。
Robert

@Gamb-もちろん、これは実際のJavadoc入力ではありません;-)はい、すべてのインポートは適切に行われています。
ロバート

1
@seeJavadocのタグの値として未加工のハイパーリンクを配置した場合も、同様のエラーが発生します。この場合にはそれを修正するには、HTMLのアンカー要素にハイパーリンクをラップ/** @see <a href="http://example.com">Example</a> */
サイバー僧侶

回答:


280

Javadocタグの@see場合、を使用する必要はありません@link。Javadocがリンクを作成します。試す

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

についての詳細はこちら@seeです。


このおかげで、私はこのソリューションをテストしましたが、これはうまくいきます!しかし、私はあなたがこれを機能させるためにリンクを使用して見る必要があるほど多くの場所で読んだので、それは少し奇妙です...
Robert

7
あなたは使用することができる@linkのJavadocは、すでにの説明では例えば、リンクに変換しないことを他の場所で@paramの説明では、@return説明の主要部分などには、
rgettman

1
これを試してみたところ、メソッドがプレーンテキストとして表示され、ローカルメソッドの@seeのようにクリックできません。
JesseBoyd 2017

146

を除いて@see、別のクラス、およびおそらくそのクラスのメソッドを参照するより一般的な方法は{@link somepackage.SomeClass#someMethod(paramTypes)}です。これには、javadocの説明の途中で使用できるという利点があります。

javadocドキュメントから(@linkタグの説明)

このタグは@seeに非常に似ています。どちらも同じ参照を必要とし、package.class#memberとlabelにまったく同じ構文を受け入れます。主な違いは、{@ link}は「関連項目」セクションにリンクを配置するのではなく、インラインリンクを生成することです。また、{@ link}タグは、他のインラインテキストと区切るために中括弧で開始および終了します。


68

したがって、元の問題の解決策は、「@ see」と「{@link ...}」の両方の参照を同じ行に必要としないことです。「@link」タグは十分なものであり、前述のように、javadocブロック内の任意の場所に配置できます。したがって、2つのアプローチを組み合わせることができます。

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

4
他の2つの回答では、「@ link」または「@see」が複数行のコメントに含まれる必要があることを示していないため、これは受け入れられるはずです/ ** * /単一行ではありません
Stoycho Andreev

1
@Sniper {@link }は、単一行のJavadocコメントで正常に機能しますが、コメントがで始まって機能しないという事実を参照してい//ますか?/** */Javadocであり、Javadoc関数に必要です。
Jase

はい、@ Jase私はこれに正確に会いました。コメントは/ ** * /である必要がありますが、//ではありません//
Stoycho Andreev 2017

6
@SniperこれはJavadocの質問であるため、これが受け入れられる答えである必要はないと思います。JavadocはJavadocコメントでのみ機能することを一般に理解しておく必要があります。
Jase

@Jaseはあなたにある程度同意しますが、Stackoverflowのような情報源は、Oracleのドキュメントや他のドキュメントからの引用ではなく、例による説明が必要であると思いますが、明確ではありません。この答えは、例がある唯一の答えです。上記の2つの答えは引用です。
Stoycho Andreev 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.