このドキュメントでは、APIのHTMLドキュメントの生成に使用される、JDK 17のjavadoc
ツールの標準ドックレットで認識されるドキュメント・コメントの形式を指定します。
javadoc
ツールのコンテキストでは、ドキュメント・コメントの内容の解釈は、コメントを処理するために使用されるドックレットまでです。 他のドックレットは、標準ドックレットと同じ構文を受け入れることも、代替の構文をサポートすることもできます。 しかし、多くのツールでサポートされているため、標準ドックレットでサポートされている構文は「事実上」標準になっています。
一般的な構文
ドキュメンテーション・コメントは、モジュール、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールド宣言の直前に置かれた場合にのみ認識されます。 メソッドの本体に置かれているドキュメンテーション・コメントは無視されます。 宣言文ごとに1つのドキュメンテーション・コメントしか認識されません。
過去の理由から、パッケージのドキュメント・コメントは、パッケージのソース・ディレクトリにあるpackage.htmlというファイルで提供される場合があります。 この場合、ドキュメンテーション・コメントは<body>
タグの内容であり、Javaタイプ(たとえば、@see
タグ)への参照は完全修飾でなければなりません。 標準ドックレットでは、overview.htmlなどのファイルで追加のドキュメントを提供することもできます。 このようなコンテンツのルールは、package.htmlと同じです。
ドキュメンテーション・コメントの全体的な形式は、最初の(main)の説明の後に、コメントが適用される宣言に関する追加情報を提供する一連の「ブロック・タグ」が続きます。 最初の記述の最初の文は、宣言された実体の簡潔で完全な記述を含むサマリー文でなければなりません。 説明テキストには、HTMLタグとエンティティ、および後述の「インライン・タグ」が含まれます。
タグ・セクションのみでコメントを付けることは可能で、初期の説明はありません。 タグ・セクションの開始後、説明を続行できません。 タグの引数は、複数行にわたって記述できます。 任意の数のタグがあります。いくつかのタイプのタグは繰り返され、他のタグは繰り返されません。
行の先頭のアスタリスク
ドキュメント・コメントを読むと、各行のアスタリスク(*
)が破棄され、最初のアスタリスク(*
)の前にある空白とタブも破棄されます。 行の先頭のアスタリスクを省略すると、先頭の空白は削除されなくなり、インデントが保持された<pre>
タグ内のドキュメント・コメントにコード例を直接貼り付けることができます。 ブラウザは、空白文字をタブよりも一律に解釈します。 インデントは、左余白(区切り記号/**
または<pre>
タグではなく)に相対的です。
HTMLコンテンツ
HTMLコンテンツは形式的にチェックされていませんが、一部のツールでは一般的なエラーを検出するのに役立ついくつかのチェックが行われます。
適切な標準に準拠したドキュメントを生成できるようにするには、ドキュメント・コメントでHTML構成を使用する際に、次の考慮事項を考慮する必要があります:
HTMLコンストラクトは、HTML 5で記述する必要があります。
生成されたドキュメントのページ内の適切な構造化ヘッダーをサポートするには、モジュール、パッケージおよびタイプのドキュメント・コメントのヘッダー、(ネストした型を含む)は
<h2>
で始まり、必要に応じてそれを増やします。同様に、コンストラクタ、メソッド、フィールドおよびその他のメンバーのドキュメント・コメントのヘッダーも<h4>
で始まる必要があります。doc-files
サブディレクトリなどのスタンドアロンHTMLファイルでは、ヘッダーは<h1>
から開始する必要があります。プログラム要素の宣言で生成されたドキュメント内の位置を識別するために使用される一意の識別子との競合を回避するため、ユーザー定義の
id
属性の値には、Java識別子の有効な文字ではない文字(-
など)が含まれる必要があります。
コメント継承
クラスとインタフェースの継承
クラスおよびインタフェースからの継承が行われる可能性のあるすべての場合に、コメントの継承が行われます。
- クラスのメソッドがスーパー・クラスのメソッドをオーバーライドしている
- インタフェースのメソッドがスーパー・インタフェースのメソッドをオーバーライドしている
- クラスのメソッドがインタフェースのメソッドを実装している
最初の2つのケースでは、標準ドックレットは、オーバーライドするメソッドのドキュメントで"オーバーライド"という小見出しを生成します。 そのコメントが継承されているかどうかにかかわらず、オーバーライドされているメソッドへのリンクが書き込まれます。
3番目のケースでは、指定されたクラスのメソッドがインタフェースにメソッドを実装すると、標準ドックレットによって、オーバーライドするメソッドのドキュメントにサブ・ヘッダー"指定者"が生成されます。 そのコメントが継承されているかどうかにかかわらず、実装されているメソッドへのリンクが書き込まれます。
メソッド・コメントの継承
標準ドックレットでは、クラスやインタフェースのメソッド・コメントの継承により、不足しているテキストを埋めたり、メソッド・コメントを明示的に継承したりすることができます。 コンストラクタ、フィールド、およびネストされたクラスは、ドキュメンテーション・コメントを継承しません。
ノート: ドキュメンテーション・コメントを実際にコピーに利用するには、継承したメソッドのソース・ファイルが-sourcepath
オプションで指定したパスに置かれていることが必要になります。 コマンド行で、クラスもパッケージも渡す必要はありません。
欠落テキストの入力
主な説明、または@return
、@param
、または@throws
タグがメソッド・コメントにない場合、その情報はオーバーライドするメソッドまたは(もしあれば)を実装するメソッドからコピーされます。
特定のパラメータの@param
タグが見つからない場合、そのパラメータのコメントが、上位の継承階層のメソッドからコピーされます。 特定の例外の@throws
タグが見つからない場合、その例外が宣言されている場合にかぎり、その@throws
タグがコピーされます。
明示的な継承
メソッドの主説明または@return
、@param
、@throws
タグ・コメントに{@inheritDoc}
インライン・タグを挿入します。 継承した対応する主説明またはタグ・コメントは、その箇所にコピーされます。
メソッド・コメントのアルゴリズム
メソッドにドキュメンテーション・コメントがないか、{@inheritDoc}
タグがある場合、標準ドックレットは次のアルゴリズムを使用して該当するコメントを検索します。 このアルゴリズムは、もっとも限定的で適用可能なドキュメンテーション・コメントを検索するように設計されており、スーパー・クラスよりもインタフェースが優先されるようになっています。
- 直接実装された各(または拡張)インタフェースを、型宣言で
implements
(またはextends
)という語の後に表示される順序で調べます。 このメソッドについて最初に見つかったドキュメンテーション・コメントを採用します。 - ステップ1でドキュメンテーション・コメントが見つからなかった場合は、直接実装されている(または、拡張されている)インタフェースのそれぞれに対して、このアルゴリズム全体を再帰的に適用します(その際の順序は、ステップ1でインタフェースを調べたときの順序と同じ)。
- ステップ2でドキュメンテーション・コメントが見つからなかった場合で、このクラスがObject以外のクラスであるが、インタフェースではない場合は、次のように処理します。
- スーパー・クラスにこのメソッドについてのドキュメンテーション・コメントが記述されていれば、そのコメントを採用します。
- ステップ3aでドキュメンテーション・コメントが見つからなかった場合は、スーパー・クラスに対して、このアルゴリズム全体を再帰的に適用します。
ブロック・タグ
ブロック・タグは、先頭のアスタリスク、空白、および初期コメント区切り文字(/**
)を無視して、行の先頭に表示する必要があります。 これは、テキスト内のそれ以外の位置で@
文字を使用しても、タグの開始としては解釈されないことを意味しています。 行の最初に@
文字を使用してもタグとして解釈されないようにするには、HTMLエンティティの@
を使用してください。 各ブロック・タグには、関連するテキストが含まれています。このテキストには、次のブロック・タグまで、またはドキュメントのコメントの最後まで、タグに続くテキストが含まれます。 この関連テキストは複数行にわたって記述できます。
インライン・タグ
インライン・タグは、中かっこ({ }
)で囲まれており、一般的に説明的なテキストとHTMLが許可されている場所に表示されます。
一部のインライン・タグには自由形式のテキストが含まれている場合があります。 このようなテキストに中カッコが明示的に含まれている場合、インライン・タグの閉じカッコを判別できるように、中カッコは"貸借一致"である必要があります。これは、適切にネストされた左中カッコと右中カッコの数が等しいことを意味します。 テキストの他の字句分析は実行されません。特に、'
、"
、\
などの文字について特別な考慮はありません。
テキスト・コンテンツがHTMLの場合、エンティティ{
および}
を使用してカッコのバランスがとれていないことがあります。
標準タグ
次のセクションでは、標準ドックレットでサポートされている標準ブロック・タグとインライン・タグについて説明します。
注意: 標準ドックレットは、同じ一般的な構文規則に従うユーザー定義タグもサポートしています。
@author
@author
name-text
-author
オプションを使用すると、指定された名前テキストを持つ"著者"エントリを生成されたドキュメントに追加します。 1つのドキュメンテーション・コメントに複数の@author
タグを含めることができます。 1つの@authorタグに1つの名前を指定することも、複数の名前を指定することもできます。 前者の場合、標準ドックレットはカンマ(,
)と名前の間にスペースを挿入します。 後者の場合は、テキスト全体が、解析されることなく、生成ドキュメントにコピーされます。 したがって、カンマではなく、各言語に対応した名前区切り文字を使う必要があるときは、1つのタグに複数の名前を指定してください。
JDK 1.0で導入
{@code}
{@code
text}
<code>{@literal
text }</code>
と等しい。
テキストをHTMLマークアップまたはネストされたJavadocタグとして解釈せずに、コード・フォントでtextを表示します。 これにより、(<Object>
)、(3 < 4
)、またはarrow (->
)などのパラメータの型のように、ドキュメンテーション・コメントにHTMLエンティティ(<
および>
)の代わりに通常の山カッコ(<
および>
)を使用することができます。 たとえば、ドキュメンテーション・コメントのテキスト{@code A<B>C}
は、生成されたHTMLページでそのままA<B>C
と表示されます。 つまり、<B>
は太字であると解釈されず、コード・フォントになります。 コード・フォントなしで同じ機能を使用する場合は、{@literal}
タグを使用します。
JDK 1.5で導入
@deprecated
@deprecated
deprecated-text
このタグは、@Deprecated
注釈と共に使用され、このAPIがもはや(それが仕事を続けても)で使用されないことを示します。 標準ドックレットは、非推奨されたテキストを主要な説明の前に移動し、イタリック体で置き、太字の警告で先行します。
deprecated-textの最初の文では、少なくとも、そのAPIが非推奨になった時期と、代替使用するべきAPIを読者に提示する必要があります。 標準ドックレットは、最初の文をサマリー・セクションと索引にコピーします。 その後の文では、それが非推奨になった理由を説明することもできます。 置換APIを指す{@link}
タグを含める必要があります。
JDK 1.0で導入
{@docRoot}
{@docRoot}
生成されるページから見た、生成ドキュメントの(生成先の)ルート・ディレクトリへの相対パスを表します。 このタグは、著作権のページや会社のロゴなど、生成されるすべてのページから参照するファイルを組み込むときに便利です。 通常は、各ページの下部から著作権のページにリンクします。
この{@docRoot}
タグは、コマンド行からも、ドキュメンテーション・コメントの中でも使用できます。 このタグはすべてのドキュメンテーション・コメントで有効です。 任意のタグ(@return
、@param
、@deprecated
タグなど)のテキスト部分を含む、概要、モジュール、パッケージ、クラス、インタフェース、コンストラクタ、メソッドおよびフィールド。
たとえば、ヘッダー、フッター、またはボトムが定義されているコマンドラインでは、次のようになります:
javadoc -bottom '<a href="{@docRoot}/copyright.html">Copyright</a>'.
{@docRoot}
タグをメイク・ファイルでこのように利用する場合、一部のmakefileプログラムでは、中カッコ{}
文字をエスケープする必要があります。 たとえば、Inprise MAKEバージョン5.2をWindows上で実行する場合は、{{@docRoot}}
のように、中カッコを二重にする必要があります。 さらに、-bottom
などのオプションに対する引数を、単一引用符ではなく、二重引用符で囲む必要があります。href
引数の値を囲む引用符は省略します。
たとえば、ドキュメントのコメントでは次のようになります:
/**
* See the <a href="{@docRoot}/copyright.html">Copyright</a>.
*/
このタグが必要な理由は、生成ドキュメントが、サブパッケージと同じ深さを持つ階層構造のディレクトリに格納されるからです。 式<a href="{@docRoot}/copyright.html">
は、java/lang/Object.javaの場合は<a href="../../copyright.html">
に、java/lang/ref/Reference.javaの場合は<a href="../../../copyright.html">
に解決されます。
JDK 1.3で導入
@exception
@exception
class-name description
このタグは@throws
タグと同等です。これは推奨されるフォームです。
JDK 1.0で導入
@hidden
@hidden
生成されたAPIドキュメントからプログラム要素を非表示にします。 このタグは、そのようなアイテムがまったく表示されないようにAPIを設計することが他に不可能な場合に使用できます。
JDK 9で導入
{@index}
{@index
word description}
{@index "
phrase"
description}
標準のドックレットによって生成された索引ファイルに、単語またはフレーズと省略可能な短い説明が含まれることを宣言します。 インデックス・エントリは、生成されたドキュメントのこの時点で表示される語句にリンクされます。 この説明は、頭字語のように、索引付けされる語句がそれ自身ではっきりしていない場合に使用することができます。
JDK 9で導入
{@inheritDoc}
{@inheritDoc}
もっとも近い継承可能なクラスまたは実装可能なインタフェースから、このタグの現在のドキュメンテーション・コメントに、ドキュメントを継承(コピー)します。 この機能により、より汎用的なコメントを継承ツリーの上位に記述し、コピーしたテキストを使って記述することができます。
このタグは、ドキュメンテーション・コメントの次の位置でのみ有効です。
- メソッドの主説明ブロック内。 この場合、主説明は、上位階層のクラスまたはインタフェースからコピーされる
- メソッドの
@return
、@param
、および@throws
タグのテキスト引数。 この場合、タグ・テキストは、上位階層の対応するタグからコピーされる
継承階層でコメントを見つける方法については、「メソッド・コメントの継承」を参照してください。 このタグが見つからない場合、コメントは、このセクションで説明するルールに応じて、自動的に継承されるかどうかが決まります。
JDK 1.4で導入
{@link}
{@link
module/
package.
class#
member label}
参照クラスの指定されたモジュール、パッケージ、クラスまたはメンバー名のドキュメントを指す表示可能なテキスト・ラベルを持つインライン・リンクを挿入します。 このタグはすべてのドキュメンテーション・コメントで有効です: @return
、@param
、@deprecated
タグなど、任意のタグのテキスト部分を含む、概要、モジュール、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールド。
このタグは@see
タグに似ています。 どちらのタグも同じ参照を必要とし、module /
package .
class #
memberおよびlabelに対して同じ構文を受け入れます。 主な違いは、{@link}
タグがリンクを"See Also"セクションに配置するのではなく、インライン・リンクを生成することです。 インライン・テキストの他の部分と区別するために、{@link}
タグの最初と最後に中カッコを記述します。 ラベルの中で右中カッコ(}
)を使う必要がある場合は、HTMLエンティティ表記「}
」を使います。
1つの文の中で使用できる{@link}
タグの数に制限はありません。
たとえば、次のコメントではgetComponentAt(int, int)
メソッドを参照しています。
Use the {@link #getComponentAt(int, int) getComponentAt} method.
標準ドックレットでは、上記のコードから次のHTMLが生成されます(同じパッケージの別のクラスを参照している場合)。
Use the <a href="Component.html#getComponentAt(int,int)">getComponentAt</a> method.
上記の行は、Webページ上では次のように表示されます。
getComponentAtメソッドを使用します。
JDK 1.2で導入
{@linkplain}
{@linkplain
module/
package.
class#
member label}
リンクのラベルがコード・フォントではなくプレーン・テキストで表示される点以外は{@link}
と同じ動作になります。 ラベルがプレーン・テキストで記述されていると便利です。 たとえば、Refer to {@linkplain add() the overridden method}.
は次のように表示されます。 Refer to the overridden method.
JDK 1.4で導入
{@literal}
{@literal
text}
テキストをHTMLマークアップまたはネストされたJavadocタグとして解釈せずに、textを表示します。 これにより、ドキュメンテーション・コメント内のHTMLエンティティ(<
および>
)の代わりに山カッコ(<
および>
)を使用することができます(パラメータ・タイプ(<Object>
)、不等式(3 < 4
)、または矢印(->
)など)。 たとえば、ドキュメンテーション・コメントのテキスト{@literal A<B>C}
は、生成されたHTMLページでそのままA<B>C
とブラウザに表示されます。 <B>
は太字であると解釈されません(コード・フォントにならない)。 コード・フォントのテキストと同じ機能を使用するには、{@code}
タグを使用します。
JDK 1.5で導入
@param
@param
parameter-name description@param
<
type-parameter-name>
description
"Parameters"セクションに、指定されたパラメータ名の後に指定された説明が続くパラメータを追加します。 説明は複数の行に続きます。 このタグは、メソッド、コンストラクタ、またはクラスのドキュメンテーション・コメント内でのみ有効です。 パラメータ名には、メソッドまたはコンストラクタ内のパラメータの名前、またはクラス、メソッド、またはコンストラクタの型パラメータの名前を指定できます。 このようなパラメータ名の前後に山カッコを使用して、型パラメータの使用を示します。
クラスの型パラメータの例:
/**
* @param <E> Type of element stored in a list
*/
public interface List<E> extends Collection<E> { ... }
メソッドの型パラメータを含むパラメータの例:
/**
* @param string the string to be converted
* @param type the type to convert the string to
* @param <T> the type of the element
* @param <V> the value of the element
*/
<T, V extends T> V convert(String string, Class<T> type) { ... }
JDK 1.0で導入
@provides
@provides
service-type description
このタグは、モジュール宣言のドキュメンテーション・コメントにのみ表示され、モジュールが提供するサービスの実装を文書化します。 この記述は、このサービス・プロバイダのインスタンスを取得する方法、およびプロバイダの重要な特徴を特定するために使用されてもよい。
JDK 9で導入
@return
@return
description{@return
description}
ブロック・タグとして、説明テキストを含む"戻り値"セクションを追加します。 このテキストでは、戻り値の型と、取り得る値の範囲について記述する必要があります。
インライン・タグとして、@return
descriptionも存在する場合と同様に、メソッドの説明の最初の文および"戻り値"セクションのコンテンツを提供します。 デフォルトの英語ロケールでは、最初の文はReturns
description .
です
このタグは、メソッドのドキュメンテーション・コメントでのみ有効です。 インライン・タグとして使用できるのは、メソッド記述の先頭のみです。
JDK 1.0ではブロック・タグとして、JDK 16ではインライン・タグとして導入されました。
@see
"関連項目"見出しに、参照を指すリンクまたはテキスト・エントリを追加します。 1つのドキュメンテーション・コメントには、任意の数の@see
タグを指定できます。すべての@seeタグの内容は、同じ見出しの下にグループ化されます。 @see
タグには、3種類の形式があります。 他のプログラム要素を参照する形式が最も一般的です。 このタグは、すべてのドキュメンテーション・コメントで有効です。 センテンス内のインライン・リンクをパッケージ、クラス、またはメンバーに挿入するには、{@link}
を参照してください。
@see
"
string"
stringのテキスト・エントリを追加します。 リンクは生成されません。 文字列は、URLで利用できない情報への参照である可能性があります。 標準ドックレットは、最初の文字として二重引用符("
)を検索することによって、これを他のケースと区別します。
@see
<a href="
url">
label</a>
urlで定義されているリンクを追加します。 URLは、相対URLまたは絶対URLです。 標準ドックレットは、最初の文字として小文字の記号(<
)を検索することによって、これを他の場合と区別します。
@see
module/
package.
class#
member label
参照されている指定された名前のドキュメントを指し示す目に見えるテキスト・ラベルのリンクを追加します。 ラベルはオプションです。これが省略されている場合は、代わりにプログラム要素名が可視テキストとして表示され、適切に短縮されます。 -noqualifier
オプションを使用すると、表示テキストからパッケージ名が全体的に削除されます。 表示されるテキストを自動生成された表示テキストと異なる場合は、ラベルを使用します。
module /
package .
class #
memberは、モジュール、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、フィールド名など、参照される任意の有効なプログラム要素名です。 名前の一部は適宜省略することができます。 classは、トップレベルまたはネストされた、任意のクラスまたはインタフェースを表します。 memberは、任意のコンストラクタ、メソッドまたはフィールド(ネストされたクラスまたはインタフェースではない)を表します。 パラメータ化された型は、名前のクラス部分とメンバー部分で使用できます。 この名前が文書化されたクラスにある場合、標準ドックレットはそのクラスへのリンクを作成します。 後続の/
を名前に追加して、同じ名前のパッケージまたはクラスが存在する場合にモジュールを参照できます。
外部参照クラスへのリンクを作成するには、-link
オプションを使います。 外部参照クラスは、コマンドラインでjavadoc
ツールに渡されないクラスです。 生成ドキュメント内で外部参照クラスにリンクしている箇所は、外部参照または外部リンクと呼ばれます。 たとえば、java.awt
パッケージでのみ標準ドックレットを実行すると、Object
などの任意のクラスが外部参照クラスになります。 外部参照クラスにリンクするには、-link
および-linkoffline
オプションを使用します。 外部参照クラスのソース・コメントは、javadoc
コマンドの実行で利用できません。
参照クラスに属していない名前のドキュメントを参照するには、他の2つの@see
タグ形式を使います。
labelは、省略可能なテキストで、リンクのラベルとして表示されます。 labelには空白を含めることができます。 labelを省略すると、現在のクラスおよびパッケージに対して適切に短縮されたpackage.
class.
memberが表示されます。
JDK 1.0で導入
@serial
@serial
field-description@serial
include@serial
exclude
デフォルトの直列化可能フィールドのドキュメンテーション・コメントで使用します。 「クラスの直列化可能なフィールドおよびデータのドキュメント化」を参照してください。
Oracle 「クラスを直列化形式仕様に含めるための基準」も参照してください。
オプションのフィールド記述は、フィールドの意味を説明し、許容可能な値をリストする必要があります。 必要に応じて、複数の行に渡って説明を記述できます。 標準ドックレットは、この情報を、直列化された形式のページに追加します。
クラスを直列化可能にした後で直列化可能フィールドをクラスに追加した場合、主説明に、追加したバージョンを識別する文を追加する必要があります。
includeおよびexclude引数は、直列化された形式ページにクラスまたはパッケージを含めるか除外するかを示します。 これらの引数には、次のような効果があります。
Serializable
を実装しているpublicまたはprotectedクラスは、通常はそのページに含められます。ただし、そのクラスまたはそのクラスが属するパッケージが@serial exclude
タグで指定されていると、そのページから除外されます。Serializable
を実装しているprivateまたはpackage-privateクラスは、通常はそのページから除外されます。ただし、そのクラスまたはそのクラスが属するパッケージが@serial include
タグで指定されていると、そのページに含められます。
たとえば、javax.swing
パッケージには、package-info.java
の@serial exclude
タグが付けられています。 パブリック・クラスjava.security.BasicPermission
には、@serial
excludeタグが付けられています。 package-privateクラスjava.util.PropertyPermissionCollection
は、@serial include
タグで指定されています。
クラス・レベルで指定された@serial
タグは、パッケージ・レベルで指定された@serial
タグをオーバーライドします。
JDK 1.2で導入
@serialData
@serialData
data-description
data-descriptionの値を使用して、直列化された形式でのデータの型と順序をドキュメント化します。 このデータには、writeObject
メソッドによって書き込まれたオプションのデータと、Externalizable.writeExterna
メソッドによって書き込まれたすべてのデータ(ベース・クラスを含む)が含まれます。
@serialData
タグは、readObject
、writeObject
、readExternal
、writeExternal
、readResolve
、およびwriteReplace
メソッドのドキュメンテーション・コメントで使用できます。
JDK 1.2で導入
@serialField
@serialField
field-name field-type field-description
Serializable class
のserialPersistentFields
メンバーのObjectStreamField
コンポーネントを記録します。 各ObjectStreamField
コンポーネントに対して@serialField
タグを1つ使用してください。
JDK 1.2で導入
@since
@since
since-text
生成されたドキュメントに、指定したsince-text値を持つ"Since"見出しを追加します。 このテキストには、特別な内部構造はありません。 このタグは任意のドキュメント・コメントで有効です。 概要、モジュール、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、またはフィールド。 このタグは、特定の変更または機能が、since-textの値で示されたソフトウェア・リリース以降、存在していることを意味します。たとえば、@since 1.5
のように使います。
Javaプラットフォームのソース・コードの場合、@since
タグは、JavaプラットフォームAPI仕様のバージョンを示します。そのソース・コードがリファレンス実装に追加された時期を示すとはかぎりません。 複数の@since
タグが許可され、複数の@author
タグのように扱われます。 プログラム要素が複数のAPIで使用される場合、複数のタグを使用できます。
JDK 1.1で導入
{@summary}
{@summary
text}
API記述の最初の文を特定して使用するためのデフォルト・ポリシーの代わりに、API記述のサマリーを特定します。 タグは、説明の始めに使用した場合にのみ意味を持ちます。 いずれの場合でも、タグはコンテンツをレンダリングするだけでレンダリングされます。
JDK 10で導入
{@systemProperty}
{@systemProperty
property-name}
システム・プロパティの名前としてproperty-nameを指定します。 名前は"ドット識別子"にする必要があります。 特に、空白文字や、}などの文字は使用できません。 タグで他のコンテンツは許可されません。追加コンテンツが今後使用するために予約される可能性があります。 タグは、モジュール、パッケージ、タイプ、フィールドおよび実行可能メンバーのドキュメント・コメントで使用できます。
JDK 12で導入
@throws
@throws
class-name description
@exception
タグと同じ動作になります。
@throws
タグは、class-nameおよびdescriptionテキストとともに、"Throws"小見出しを生成されたドキュメントに追加します。 クラス名は、メソッドによってスローされる例外の名前です。 このタグは、メソッドまたはコンストラクタのドキュメンテーション・コメント内でのみ有効です。 クラス名が完全修飾でない場合、標準ドックレットは検索順序を使用してこのクラスを検索します。 1つのドキュメンテーション・コメントで、同じ例外または異なる例外の@throws
タグを複数使用できます。
@throws
タグがthrows句に例外のために存在しない場合、標準のドックレットは、@throws
タグで文書化されているかのように、その例外を生成された出力(説明なし)に追加します。
オーバーライドされるメソッド内で例外が明示的に宣言されている場合のみ、@throws
ドキュメンテーションがそのメソッドからサブクラスにコピーされます。 インタフェース・メソッドから実装メソッドにコピーされる場合も同様です。 @throws
タグにドキュメンテーションを継承させるには、{@inheritDoc}
タグを使用できます。
JDK 1.2で導入
@uses
@uses
service-type description
このタグは、モジュール宣言のドキュメンテーション・コメントにのみ表示され、モジュールがサービスを使用できることを文書化します。 この記述は、必要とされる可能性のあるサービスの特性、およびサービスのためのプロバイダが利用できない場合にモジュールが何をするかを指定するために使用することができます。
JDK 9で導入
{@value}
{@value
package.
class#
field}
定数の値を表示します。 {@value}
タグが静的フィールドのドキュメンテーション・コメントで引数なしで使用されている場合、その定数の値が表示されます。
/**
* The value of this constant is {@value}.
*/
public static final String SCRIPT_START = "<script>"
任意のドキュメンテーション・コメントに引数package.
class#
fieldを使用すると、{@value}
タグは指定された定数の値を表示します:
/**
* Evaluates the script starting with {@value #SCRIPT_START}.
*/
public String evalScript(String script) {}
引数package.
class#
fieldは、メンバーが静的フィールドでなければならないことを除いて、@see
タグ引数の形式に似ています。
JDK 1.4で導入
@version
@version
version-text
-versionオプションを使用すると、指定されたversion-text値を持つ"Version"小見出しを生成された文書に追加します。 このタグは、このコードが含まれるソフトウェアの現在のリリース番号を保持するように意図されています。これに対し、@since
は、このコードが導入されたリリース番号を保持します。 version-textの値には、特別な内部構造はありません。
1つのドキュメンテーション・コメントに複数の@version
タグを含めることができます。 必要に応じて、@version
タグごとに1つのリリース番号を指定することも、タグごとに複数のリリース番号を指定することもできます。 前者の場合、標準ドックレットはカンマ(,
)と名前の間にスペースを挿入します。 後者の場合は、テキスト全体が、解析されることなく、生成ドキュメントにコピーされます。 したがって、カンマ以外のローカライズされた区切り記号が必要な場合は、1行に複数の名前を使用できます。
JDK 1.0で導入
タグを使用できる場所
次の表に、どのコンテキストでどのタグを使用できるかをまとめます。
タグ | 概要 | モジュール | パッケージ | 型 | コンストラクタ | メソッド | フィールド |
---|---|---|---|---|---|---|---|
@author |
✓ | ✓ | ✓ | ✓ | |||
{@code} |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
@deprecated |
✓ | ✓ | ✓ | ✓ | ✓ | ||
{@docRoot} |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
@exception |
✓ | ✓ | |||||
@hidden |
✓ | ✓ | ✓ | ||||
{@index} |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
{@inheritDoc} |
✓ | ✓ | |||||
{@link} |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
{@linkplain} |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
{@literal} |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
@param |
✓ | ✓ | ✓ | ||||
@provides |
✓ | ||||||
@return |
✓ | ||||||
@see |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
@serial |
✓ | ✓ | ✓ | ||||
@serialData |
* | ||||||
@serialField |
* | ||||||
@since |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
{@summary} |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
{@systemProperty} |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
@throws |
✓ | ✓ | |||||
@uses |
✓ | ||||||
{@value} |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
@version |
✓ | ✓ | ✓ | ✓ |
ノート:
- 「概要」ページは宣言に関連付けられていません。 これは、通常、
javadoc
コマンドのオプションで指定します。 - "メソッド"には注釈型メンバーが含まれます。
@serialData
は、readObject
、writeObject
、readExternal
、writeExternal
、readResolve
およびwriteReplace
メソッドのドキュメント・コメントでのみ使用できます。@serialField
は、serialPersistentFields
フィールドのドキュメント・コメントでのみ使用できます。