." Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved. ." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ." ." This code is free software; you can redistribute it and/or modify it ." under the terms of the GNU General Public License version 2 only, as ." published by the Free Software Foundation. ." ." This code is distributed in the hope that it will be useful, but WITHOUT ." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ." FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ." version 2 for more details (a copy is included in the LICENSE file that ." accompanied this code). ." ." You should have received a copy of the GNU General Public License version ." 2 along with this work; if not, write to the Free Software Foundation, ." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ." ." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ." or visit www.oracle.com if you need additional information or have any ." questions. ." .TH javadoc 1 "14 Apr 2011" .SH "名前" javadoc \- Java API ドキュメントジェネレータ .LP Java ソースファイルから、API ドキュメントの HTML ページを生成します。このドキュメントで紹介されている Javadoc の例は、 Solaris を使用した場合のものです。 .SH "形式" .LP \f4javadoc\fP\f2\ [\ \fP\f2options\fP\f2\ ]\ [\ packagenames\ ]\ [\ sourcefilenames\ ]\ [\ \-subpackages\fP\ \f2pkg1:pkg2:...\fP\f2\ ]\ [\ \fP\f2@argfiles\fP\f2\ ]\fP .LP 引数を指定する順序は任意です。Javadoc ツールでの、処理対象の .java ファイルを決定する方法の詳細については、「ソースファイルの処理」\f2を参照\fPしてください。 .RS 3 .TP 3 options このドキュメントで説明されているコマンド行オプションです。Javadoc オプションの標準的な使用法については、「使用例」を参照してください。 .TP 3 packagenames スペースで区切られた一連のパッケージ名です。たとえば、 \f2java.lang\ java.lang.reflect\ java.awt のように指定します\fP。ドキュメント化するパッケージを個別に指定する必要があります。ワイルドカードは使用不可です。再帰的処理のためには、\-subpackages を使用します。Javadoc ツールは、\f2\-sourcepath\fP を使用してこれらのパッケージ名を検索します。「1 つ以上のパッケージのドキュメント化」の例を参照してください。 .TP 3 sourcefilenames スペースで区切られた一連のソースファイル名です。 各ファイルは、パスで始まります。アスタリスク (*) などのワイルドカードを含めることができます。Javadoc ツールが処理するのは、ファイル名が「.java」という拡張子で終わり、その拡張子を除いた名前が実際に有効なクラス名であるすべてのファイルです ( .na \f2「Identifiers」\fP @ .fi http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625を参照)。したがって、ハイフンを含む名前 ( \f2X\-Buffer\fP など) や、その他の無効な文字を含む名前を付けることによって、それらのファイルをドキュメント化の対象から除外できます。これは、テスト用のファイルや、テンプレートから生成されたファイルの場合に便利です。ソースファイル名の前に指定したパスによって、javadoc がそのファイルを検索する場所が決まります。Javadoc ツールは、これらのソースファイル名を検索するときには \f2\-sourcepath\fP を使用しません。相対パスは現在のディレクトリを起点とするため、 \f2Button.java\fP を渡すことは、 \f2./Button.java\fP を渡すことと同じです。ソースファイル名をフルパスで指定すると、 \f2/home/src/java/awt/Graphics*.java のようになります\fP。 「1 つ以上のクラスのドキュメント化」の例を参照してください。また、「パッケージとクラスのドキュメント化」の例のように、パッケージ名とソースファイル名を混在させることもできます。 .TP 3 \-subpackages pkg1:pkg2:... ソースファイルから指定されたパッケージおよびそのサブパッケージ内に再帰的にドキュメントを生成します。パッケージ名またはソースファイル名を指定する必要はありません。 .TP 3 @argfiles Javadoc オプション、パッケージ名、およびソースファイル名を任意の順序で並べたリストが含まれる 1 つ以上のファイルです。ワイルドカード (*) や \f2\-J\fP オプションは、このファイルの中では指定できません。 .RE .SH " 説明" .LP \f3Javadoc\fP ツールは、一連の Java ソースファイルにある宣言およびドキュメンテーションコメントを解析し、デフォルトでは public クラス、protected クラス、入れ子にされたクラス (匿名の内部クラスは除く)、インタフェース、コンストラクタ、メソッド、およびフィールドについて説明した一連の HTML ページを生成します。また、API (アプリケーションプログラミングインタフェース) ドキュメントの生成や、一連のソースファイルの実装ドキュメントの生成に使用できます。 .LP Javadoc ツールは、パッケージ全体、個々のソースファイル、またはその両方に対して実行できます。パッケージ全体のドキュメント化を行うには、\f2\-subpackages\fP を使用して最上位ディレクトリから下方に再帰的にたどるか、パッケージ名の明示的なリストを渡します。個々ソースファイルに対して javadoc を実行する場合は、一連のソース (.\f2.java\fP) ファイル名を渡します。具体的な例は、このドキュメントの最後に紹介します。次に、Javadoc によるソースファイルの処理について説明します。 .SS ソースファイルの処理 .LP Javadoc ツールは、末尾が「\f2.java\fP」のファイルを処理するだけでなく、「ソースファイル」で説明するその他のファイルも処理します。個々のソースファイル名を明示的に渡すことによって Javadoc ツールを実行する場合、どの \f2.java\fP ファイルを処理するかを正確に指定できます。ただし、多くの開発者はこの方法では作業しません。パッケージ名を渡すほうが簡単だからです。ソースファイル名を明示的に指定しなくても、Javadoc ツールは 3 つの方法で実行できます。その方法とは、(1) パッケージ名を渡す、(2) \f2\-subpackages\fP を使用する、(3) ソースファイル名でワイルドカードを使用する (\f2*.java\fP)、の 3 つです。これらの場合、Javadoc ツールが「\f2.java\fP」ファイルの処理を行うのは、そのファイルが次のすべての要件を満たす場合だけです。 .RS 3 .TP 2 o 名前から接尾辞「\f2.java\fP」を取り除くと実際に有効なクラス名になっている (有効な文字については .na \f2「Identifiers」\fP @ .fi http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#40625を参照) .TP 2 o ソースツリーのルートから相対的なディレクトリパスが、区切り文字をドットに変換すると、実際に有効なパッケージ名になっている .TP 2 o パッケージ文には有効なパッケージ名が含まれる (前項目で指定) .RE .LP \f3リンクの処理\fP \- Javadoc ツールは、処理の実行中に、その実行でドキュメント化されるパッケージ、クラス、およびメンバーの名前に対して、自動的に相互参照リンクを追加します。このようなリンクは、次のような場所に追加されます。 .RS 3 .TP 2 o 宣言 (戻り値の型、引数の型、フィールドの型) .TP 2 o \f2@see\fP タグから生成された [関連項目] セクション .TP 2 o \f2{@link}\fP タグから生成されたインラインテキスト .TP 2 o \f2@throws\fP タグから生成された例外の名前 .TP 2 o インタフェースのメンバーに対する「定義」リンクと、クラスのメンバーに対する「オーバーライド」リンク .TP 2 o パッケージ、クラス、およびメンバーを列挙している概要テーブル .TP 2 o パッケージおよびクラスの継承ツリー .TP 2 o 索引 .RE .LP コマンド行で指定しなかったクラスについての既存のテキスト (別に生成したテキスト) に対してハイパーリンクを追加するには、\f2\-link\fP および \f2\-linkoffline\fP オプションを利用できます。 .LP \f3その他の処理についての詳細\fP \- Javadoc ツールは、実行するたびに 1 つの完全なドキュメントを作成します。ドキュメントを追加生成することはできません。つまり、Javadoc ツールの以前の実行結果を修正したり、その内容を直接組み入れたりすることはできません。ただし、前述のように、以前の実行結果に対してリンクを追加することはできます。 .LP 実装上の理由から、Javadoc ツールは、処理を実行するために java コンパイラを必要とし、java コンパイラに依存しています。Javadoc ツールは、 \f2javac\fP の一部を呼び出して宣言をコンパイルしますが、メンバーの実装は無視します。Javadoc ツールは、クラス階層を含むクラスの豊富な内部表現とクラスの「使用」関係を構築し、その情報から HTML を生成します。さらに、Javadoc ツールは、ソースコードのドキュメンテーションコメントから、ユーザーの提供したドキュメントも取得します。 .LP 実際には、Javadoc ツールは、メソッド本体を持たない純粋なスタブファイルであるような \f2.java\fP ソースファイルでも動作します。したがって、API の作成時には、実装を記述する前の設計の早い段階で、ドキュメンテーションコメントを記述して javadoc ツールを実行できます。 .LP コンパイラに依存することによって、HTML 出力は、実際の実装に正確に対応します。実際の実装は、明示的なソースコードにではなく、暗黙のソースコードに依存する場合があります。たとえば、Javadoc ツールは、.class ファイルには存在するがソースコードには存在しない .na \f2デフォルトコンストラクタ\fP @ .fi http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#36154 (Java 言語仕様のセクション 8.6.7) \f2をドキュメント化\fP します。 .LP 通常、Javadoc ツールでは、ソースファイルのコードが不完全またはエラーを含んでいる場合でもドキュメントを生成できます。このため、デバッグやトラブルシューティングを完了する前にドキュメントを生成できます。たとえば、Java 言語仕様によると、抽象メソッドを含むクラスは、それ自体抽象として宣言されなければなりません。このエラーを検出すると、javac コンパイラは停止しますが、Javadoc ツールは警告を出さずに処理を続行します。Javadoc ツールはドキュメンテーションコメントの基本的なチェックを行います。ドキュメンテーションコメントをより詳しくチェックする必要がある場合は、DocCheck ドックレットを使用してください。 .LP Javadoc ツールは、ドキュメントの内部構造を構築する際、参照クラスをすべてロードします。このため、Javadoc ツールは、ブートストラップクラス、拡張機能、またはユーザークラスにかかわらず、すべての参照クラスを検索できなければなりません。詳細は、 .na \f2「クラスの検索方法」\fP @ .fi http://java.sun.com/javase/6/docs/technotes/tools/findingclasses.htmlを参照してください。通常、作成するクラスは、拡張機能としてロードするか、Javadoc ツールのクラスパス内に置く必要があります。 .SS Javadoc のドックレット .LP Javadoc ツールの出力の内容と形式は、ドックレットを使ってカスタマイズできます。Javadoc ツールには、標準ドックレットと呼ばれるデフォルトの「組み込み」ドックレットがあります。標準ドックレットは、HTML 形式の API ドキュメントを生成します。標準ドックレットを修正またはサブクラス化することや、HTML、XML、MIF、RTF などの好みの出力形式を生成する独自のドックレットを記述することも可能です。ドックレットとその使用法については、次の項目を参照してください。 .RS 3 .TP 2 o .na \f2Javadoc のドックレット\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html .TP 2 o \f2\-doclet\fP コマンド行オプション .RE .LP \f2\-doclet\fP コマンド行オプションでカスタムドックレットが指定されていない場合、Javadoc ツールは、デフォルトの標準ドックレットを使用します。javadoc ツールには、使用されているドックレットに関係なく使用できるコマンド行オプションがあります。標準ドックレットでは、これらのほかに、いくつかのコマンド行オプションが追加されます。どちらのオプションについても、このあとの「オプション」で説明します。 .SS 関連ドキュメントおよびドックレット .RS 3 .TP 2 o .na \f2Javadoc に施された拡張機能\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/javadoc/index.html \- Javadoc 1.4 で追加された改良点の詳細 .TP 2 o .na \f2Javadoc FAQ\fP @ .fi http://java.sun.com/j2se/javadoc/faq/index.html \- 頻繁に寄せられる質問に対する回答、Javadoc 関連のツールについての情報、およびバグの回避方法 .TP 2 o .na \f2How to Write Doc Comments for Javadoc\fP @ .fi http://java.sun.com/j2se/javadoc/writingdoccomments/index.html \- ドキュメンテーションコメントの記述方法に関する Sun の規約 .TP 2 o .na \f2Requirements for Writing API Specifications\fP @ .fi http://java.sun.com/j2se/javadoc/writingapispecs/index.html \- Java SE プラットフォーム仕様を記述する際に使用された標準要件この情報は、ソースファイルのドキュメンテーションコメント形式で API 仕様を記述する場合にも、その他の形式で記述する場合にも役立ちます。検証可能なアサーションを満たすパッケージ、クラス、インタフェース、フィールド、およびメソッドについての要件を定めています。 .TP 2 o .na \f2ドキュメンテーションコメントの仕様\fP @ .fi http://java.sun.com/docs/books/jls/first_edition/html/18.doc.html \- ドキュメンテーションコメントのオリジナル仕様については、『Java Language Specification』 (James Gosling、Bill Joy、Guy Steele 共著) の初版の第 18 章「Documentation Comments」を参照してください。この章は、第 2 版では削除されました。 .TP 2 o .na \f2DocCheck ドックレット\fP @ .fi http://java.sun.com/javadoc/doccheck \- ソースファイル内のドキュメンテーションコメントをチェックし、検出されたエラーや不正のレポートを生成します。Doc Check ユーティリティーの一部です。 .TP 2 o .na \f2MIF ドックレット\fP @ .fi http://java.sun.com/javadoc/mifdoclet \- MIF、FrameMaker、PDF の書式で API ドキュメントを自動生成します。MIF は Adobe FrameMaker の交換書式です。 .RE .SS 用語 .LP \f2「ドキュメンテーションコメント」\fP、\f2「doc コメント」\fP、\f2「主説明」\fP、\f2「タグ」\fP、\f2「ブロックタグ」\fP、および\f2「インラインタグ」\fPの用語については、「ドキュメンテーションコメント」で説明します以下のその他の用語は、Javadoc ツールのコンテキストで特定の意味を持ちます。 .RS 3 .TP 3 生成ドキュメント (generated document) javadoc ツールが Java ソースコード内のドキュメンテーションコメントから生成したドキュメントのことです。デフォルトの生成ドキュメントは HTML 形式で、標準ドックレットによって作成されます。 .LP .TP 3 名前 (name) Java 言語で書かれたプログラム要素の名前、つまりパッケージ、クラス、インタフェース、フィールド、コンストラクタ、またはメソッドの名前のことです。名前は、 \f2java.lang.String.equals(java.lang.Object)\fP のような完全修飾名にすることも、 \f2equals(Object)\fP のような部分修飾名にすることもできます。 .LP .TP 3 ドキュメント化されるクラス (documented classes) javadoc ツールの実行によって詳細なドキュメントが生成されるクラスおよびインタフェースのことです。ドキュメント化するには、ソースファイルが使用可能でなければならず、ソースファイル名またはパッケージ名を javadoc コマンドに渡され、アクセス修飾子 (public、protected、package\-private または private) によってフィルタ処理されないようにしなければなりません。ドキュメント化されるクラスは、javadoc ツールの出力に組み込まれるクラス、つまり「包含クラス」とも呼ばれます。 .LP .TP 3 包含クラス (included classes) ツールの実行によって詳細なドキュメントが生成されるクラスおよびインタフェースのことです。「ドキュメント化されるクラス」と同じ。 .LP .TP 3 除外クラス (excluded classes) ツールの実行によって詳細なドキュメントが生成されないクラスおよびインタフェースのことです。 .LP .TP 3 参照クラス (referenced classes) ドキュメント化されるクラスおよびインタフェースの定義 (実装) またはドキュメンテーションコメントの中で明示的に参照されているクラスおよびインタフェースのことです。参照の例としては、戻り値の型、パラメータの型、キャストの型、拡張されたクラス、実装されたインタフェース、インポートされたクラス、メソッド本体で使用されるクラス、@see、{@link}、{@linkplain}、{@inheritDoc} タグなどがあります。この定義は .na \f21.3\fP @ .fi http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/javadoc.html#referencedclasses から変更されています。javadoc ツールを実行するときは、Javadoc のブートクラスパスおよびクラスパス内にあるすべての参照クラスをメモリーにロードする必要があります。参照クラスが見つからない場合は、「クラスが見つかりません」という警告が表示されます。Javadoc ツールは、クラスの存在とそのメンバーの完全指定の名前を判別するのに必要なすべての情報を、.class ファイルから引き出すことができます。 .LP .TP 3 外部参照クラス (external referenced classes) 参照クラスのうち、javadoc ツールの実行中にドキュメントが生成されないクラスのことです。つまり、これらのクラスは、コマンド行で Javadoc ツールに渡されていません。生成ドキュメント内でこれらのクラスにリンクしている箇所は、「外部参照」または「外部リンク」と呼ばれます。たとえば、Javadoc ツールの実行対象が \f2java.awt\fP パッケージのみである場合、 \f2java.lang\fP 内のすべてのクラス ( \f2Object\fPなど) が外部参照クラスになります。外部参照クラスにリンクするには、 \f2\-link\fP および \f2\-linkoffline\fP オプションを使用します。外部参照クラスには、通常そのソースコメントを javadoc ツールの実行で利用できないという重要な特徴があります。この場合、それらのコメントを継承することはできません。 .RE .SH "ソースファイル" .LP Javadoc ツールは 4 種類の異なる「ソース」ファイルから出力を生成します。その 4 種類とは、クラスの Java 言語ソースファイル (\f2.java\fP)、パッケージコメントファイル、概要コメントファイル、およびその他の処理されないファイルです。また、ドキュメント化しないがソースツリーに存在する場合があるテストファイルやテンプレートファイルについても説明します。 .SS クラスソースコードファイル .LP それぞれのクラスまたはインタフェース、およびそのメンバーは、独自のドキュメンテーションコメントを持つことができ、それを \f2.java\fP ファイル内に保持します。ドキュメンテーションコメントの詳細は、「ドキュメンテーションコメント」を参照してください。 .SS パッケージコメントファイル .LP それぞれのパッケージは、独自のドキュメンテーションコメントを持つことができ、それを専用の「ソース」ファイルに保持します。その内容は、Javadoc ツールによって生成される概要ページに組み込まれます。このコメントには、通常、そのパッケージ全体に当てはまるドキュメントを記述します。 .LP パッケージコメントファイルを作成する場合、コメントの格納先として、次の 2 つのファイルのいずれかを選択できます。 .RS 3 .TP 2 o \f2package\-info.java\fP \- パッケージ宣言、パッケージ注釈、パッケージコメント、および Javadoc タグを格納できます。このファイルは一般に、package.html よりも推奨されます。 .TP 2 o \f2package.html\fP \- 格納できるのはパッケージコメントと Javadoc タグだけです。パッケージ注釈は格納できません。 .RE .LP 各パッケージでは、単一の \f2package.html\fP ファイル、単一の \f2package\-info.java\fP ファイルのいずれかを選択できますが、その両方を選択することはできません。このどちらかのファイルを \f2.java\fP ファイルとともに、ソースツリー内のそのパッケージのディレクトリ内に配置してください。 .LP \f4package\-info.java\fP \- このファイルには、次の構造のパッケージコメントを格納できます。 コメントはパッケージ宣言の前に配置します。 .LP File: \f2java/applet/package\-info.java\fP .nf \f3 .fl /** .fl * Provides the classes necessary to create an .fl * applet and the classes an applet uses .fl * to communicate with its applet context. .fl *
.fl * The applet framework involves two entities: .fl * the applet and the applet context. .fl * An applet is an embeddable window (see the .fl * {@link java.awt.Panel} class) with a few extra .fl * methods that the applet context can use to .fl * initialize, start, and stop the applet. .fl * .fl * @since 1.0 .fl * @see java.awt .fl */ .fl package java.lang.applet; .fl \fP .fi .LP コメント区切り文字の \f2/**\fP と \f2/*\fP は存在している必要がありますが、中間行の行頭のアスタリスクは省略してもかまいません。 .LP \f4package.html\fP \- このファイルには、次の構造のパッケージコメントを格納できます。コメントは \f2
\fP 要素内に配置します。 .LP File: \f2java/applet/package.html\fP .nf \f3 .fl Provides the classes necessary to create an applet and the classes an applet uses to communicate with its applet context..fl The applet framework involves two entities: the applet .fl and the applet context. An applet is an embeddable window (see the {@link java.awt.Panel} class) with a few extra methods that the applet context can use to initialize, start, and stop the applet.@since 1.0 @see java.awt .fl \fP .fi .LP これは単なる通常の HTML ファイルであり、パッケージ宣言を含んでいない点に注意してください。パッケージコメントファイルの内容は、ほかのすべてのコメントと同様に HTML で記述しますが、1 つだけ例外があります。それは、このドキュメンテーションコメントには、コメント区切り文字 である \f2/**\fP と \f2*/\fP 、および行頭のアスタリスクを含めてはならない、という点です。コメントを書く場合は、最初の文をパッケージの概要とし、 \f2
\fP と最初の文の間にタイトルやその他のテキストを含めないようにします。パッケージタグを含めることはできますが、ほかのドキュメンテーションコメントと同様、すべてのブロックタグは、主説明のあとに置かなければなりません。 \f2@see\fP タグをパッケージコメントファイルに追加する場合には、完全修飾名を使用する必要があります。詳細は、 .na \f2package.html\fPの例 @ .fi http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#packagecommentsを参照してください。 .LP \f3パッケージコメントファイルの処理\fP \- Javadoc ツールは、実行時にパッケージコメントファイルを自動的に検索し、このファイルを見つけると次の処理を行います。 .RS 3 .TP 2 o 処理できるようにコメントをコピーする( \f2package.html\fP の場合であれば、 \f2\fP と \f2\fP HTML タグの間にある内容をすべてコピーする。 \f2\fP セクションを含め、そこに \f2\fP タグ内にペーストしても、インデントが保持されます。通常、ブラウザは、空白文字をタブよりも一律に解釈します。インデントの起点は左マージンになります (区切り文字 \f2/**\fP または \f2\fP タグではなく)。 .LP \f3最初の文\fP \- 各ドキュメンテーションコメントの最初の文は、宣言されているエンティティーに関する簡潔かつ完全な要約文である必要があります。この「最初の文」は、直後にスペース、タブ、または改行が続く最初のピリオド (ロケールが英語に設定されている場合)、または最初のタグがある位置で終わります。最初の文は、Javadoc ツールによって HTML ページの最初にあるメンバーの概要の部分にコピーされます。 .LP \f3複数フィールドの宣言\fP \- Java では、1 つの文で複数のフィールドを宣言できます。ただし、この文には、1 つのドキュメンテーションコメントしか記述できません。そのコメントが、すべてのフィールドに対してコピーされます。したがって、フィールドごとにドキュメンテーションコメントを記述する必要がある場合は、各フィールドを別々の文で宣言しなければなりません。たとえば、次のドキュメンテーションコメントは、1 つの宣言として記述すると不適切です。この場合は、宣言を 2 つに分けることをお勧めします。 .nf \f3 .fl /** .fl * The horizontal and vertical distances of point (x,y) .fl */ .fl public int x, y; // Avoid this .fl \fP .fi .LP 上記のコードからは、次のようなドキュメントが生成されます。 .nf \f3 .fl public int \fP\f3x\fP .fl .fi .RS 3 The horizontal and vertical distances of point (x,y) .RE .nf \f3 .fl public int \fP\f3y\fP .fl .fi .RS 3 The horizontal and vertical distances of point (x,y) .RE .LP \f3見出しタグはなるべく使用しない\fP \- メンバーに対してドキュメンテーションコメントを記述するときには、や
などの HTML 見出しタグは、なるべく使わないでください。 Javadoc ツールは、完全に構造化されたドキュメントを作成するので、このような構造化タグが使われていると、生成ドキュメントの形式が悪影響を受けることがあります。ただし、クラスやパッケージのコメントでは、これらの見出しタグを使って独自の構造を組み立ててかまいません。 .SS メソッドコメントの自動コピー .LP Javadoc ツールには、次の 2 つの場合に、クラスおよびインタフェースのメソッドコメントをコピーまたは「継承」する機能があります。コンストラクタ、フィールド、および入れ子のクラスは、ドキュメンテーションコメントを継承しません。 .RS 3 .TP 2 o \f3自動的にコメントを継承して見つからないテキストを埋める\fP \- 主説明、 \f2@return\fP タグ、 \f2@param\fP タグ、または \f2@throws\fP タグがメソッドコメントに見つからない場合、Javadoc ツールは、オーバーライドまたは実装している場合はその対象となるメソッドから、対応する主説明またはタグコメントを、次のアルゴリズムに従ってコピーします。 .LP 厳密には、特定のパラメータの \f2@param\fP タグが見つからない場合、そのパラメータのコメントが、上位の継承階層のメソッドからコピーされます。特定の例外の \f2@throws\fP タグが見つからない場合、その例外が宣言されている場合にかぎり、 \f2@throws\fP タグがコピーされます。 .LP この動作はバージョン 1.3 以前の動作とは対照的です。これまでのバージョンでは、主説明またはタグが存在すれば、コメントは一切継承されませんでした。 .TP 2 o \f3{@inheritDoc} タグを含むコメントを明示的に継承する\fP \- インラインタグ \f2{@inheritDoc}\fP を、メソッドの主説明内または \f2@return\fP、 \f2@param\fP 、 \f2@throws\fP のいずれかのタグコメント内に挿入します。対応する継承された主説明またはタグコメントがその位置にコピーされます。 .RE .LP ドキュメンテーションコメントを実際にコピーに利用するには、継承したメソッドのソースファイルが \-sourcepath で指定したパスだけに置かれていることが必要になります。コマンド行で、クラスもパッケージも渡す必要はありません。この点は、クラスがドキュメント化されるクラスでなければならなかった 1.3.x 以前のリリースと異なります。 .LP \f3クラスおよびインタフェースからの継承\fP \- クラスおよびインタフェースから継承する次の 3 つの場合に、コメントの継承が行われます。 .RS 3 .TP 2 o クラスのメソッドがスーパークラスのメソッドをオーバーライドしている .TP 2 o インタフェースのメソッドがスーパーインタフェースのメソッドをオーバーライドしている .TP 2 o クラスのメソッドがインタフェースのメソッドを実装している .RE .LP 最初の 2 つのケース (メソッドがオーバーライドしている場合) では、Javadoc ツールは、そのコメントが継承されているかどうかにかかわらず、オーバーライドしているメソッドのドキュメント内に「オーバーライド」という小見出しを生成し、オーバーライドされているメソッドへのリンクを書き込みます。 .LP 3 つ目のケース (特定のクラスのメソッドがインタフェースのメソッドを実装している場合) では、javadoc ツールは、オーバーライドしているメソッドのドキュメント内に「定義」という小見出しを生成し、実装されているメソッドへのリンクを書き込みます。これは、コメントが継承されているかどうかにかかわりません。 .LP \f3メソッドの説明が継承されるアルゴリズム\fP \- あるメソッドにドキュメンテーションコメントが記述されていない場合、または {@inheritDoc} タグがある場合、Javadoc ツールは、次のようなアルゴリズムを使用して適切なコメントを検索します。 このアルゴリズムは、もっとも適切なドキュメンテーションコメントを検索できるように設計されており、スーパークラスよりもインタフェースが優先されるようになっています。 .RS 3 .TP 3 1. 直接に実装されている (または、拡張されている) インタフェースを、メソッドの宣言で implements (または extends) キーワードのあとに登場する順序で、1 つずつ調べる。このメソッドについて最初に見つかったドキュメンテーションコメントを採用する .TP 3 2. 手順 1 でドキュメンテーションコメントが見つからなかった場合は、直接実装されている (または、拡張されている) インタフェースのそれぞれに対して、このアルゴリズム全体を再帰的に適用する (その際の順序は、手順 1 でインタフェースを調べたときの順序と同じ) .TP 3 3. 手順 2 でドキュメンテーションコメントが見つからなかった場合で、このクラスが Object 以外のクラスである (インタフェースではない) 場合は、次のように処理する .RS 3 .TP 3 a. スーパークラスにこのメソッドについてのドキュメンテーションコメントが記述されていれば、そのコメントを採用する .TP 3 b. 手順 3a でドキュメンテーションコメントが見つからなかった場合は、スーパークラスに対して、このアルゴリズム全体を適用する .RE .RE .SH "javadoc タグ" .LP Javadoc ツールは、Java のドキュメンテーションコメント内に埋め込まれた特別なタグを解析します。これらのドキュメンテーションタグを使うと、書式の整った完全な API ドキュメントをソースコードから自動的に生成できます。タグは「アットマーク」記号 (\f2@\fP) で始まり、大文字と小文字の区別があります。タグは、大文字と小文字を使用して、表示されているとおりに入力する必要があります。タグは、行の先頭 (先行する空白と省略可能なアスタリスクは除く) に置かなければなりません。慣例として、同じ名前のタグは 1 か所にまとめて記述するようにします。たとえば、 \f2@see\fP タグはすべて同じ場所に配置します。 .LP タグには 2 つのタイプがあります。 .RS 3 .TP 2 o \f3ブロックタグ\fP \- 主説明に続くタグセクション内にのみ記述可能。ブロックタグは、 \f2@tag\fP の形式をとります。 .TP 2 o \f3インラインタグ\fP \- 主説明内、またはブロックタグのコメント内に記述可能。インラインタグは、 \f2{@tag}\fP.のように中括弧で囲みます。 .RE .LP 今後のリリースで導入されるタグについては、 .na \f2「Proposed Javadoc Tags」\fP @ .fi http://java.sun.com/j2se/javadoc/proposed\-tags.htmlを参照してください。 .LP 現時点で有効なタグは、次のとおりです。 .LP .TS .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 .de 35 .ps \n(.s .vs \n(.vu .in \n(.iu .if \n(.u .fi .if \n(.j .ad .if \n(.j=0 .na .. .nf .nr #~ 0 .if n .nr #~ 0.6n .ds #d .d .if \(ts\n(.z\(ts\(ts .ds #d nl .fc .nr 33 \n(.s .rm 80 81 .nr 34 \n(.lu .eo .am 81 .br .di a+ .35 .ft \n(.f .ll \n(34u*1u/3u .if \n(.l<\n(81 .ll \n(81u .in 0 \f3導入された JDK/SDK のバージョン\fP .br .di .nr a| \n(dn .nr a- \n(dl .. .ec \ .35 .nf .ll \n(34u .nr 80 0 .nr 38 \w\f3タグ\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@author\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2{@code}\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2{@docRoot}\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@deprecated\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@exception\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2{@inheritDoc}\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2{@link}\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2{@linkplain}\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2{@literal}\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@param\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@return\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@see\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@serial\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@serialData\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@serialField\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@since\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@throws\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2{@value}\fP .if \n(80<\n(38 .nr 80 \n(38 .nr 38 \w\f2@version\fP .if \n(80<\n(38 .nr 80 \n(38 .80 .rm 80 .nr 81 0 .nr 38 \w1.0 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.5 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.3 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.0 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.0 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.4 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.2 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.4 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.5 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.0 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.0 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.0 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.2 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.2 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.2 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.1 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.2 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.4 .if \n(81<\n(38 .nr 81 \n(38 .nr 38 \w1.0 .if \n(81<\n(38 .nr 81 \n(38 .81 .rm 81 .nr 38 \n(a- .if \n(81<\n(38 .nr 81 \n(38 .35 .nf .ll \n(34u .nr 38 1n .nr 79 0 .nr 40 \n(79+(0*\n(38) .nr 80 +\n(40 .nr 41 \n(80+(3*\n(38) .nr 81 +\n(41 .nr TW \n(81 .if t .if \n(TW>\n(.li .tm Table at line 867 file Input is too wide - \n(TW units .fc .nr #T 0-1 .nr #a 0-1 .eo .de T# .ds #d .d .if \(ts\n(.z\(ts\(ts .ds #d nl .mk ## .nr ## -1v .ls 1 .ls .. .ec .ne \n(a|u+\n(.Vu .if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v) .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f3タグ\fP\h'|\n(41u' .mk ## .nr 31 \n(## .sp |\n(##u-1v .nr 37 (\n(41u+\n(81u-\n(a-u)/2u .in +\n(37u .a+ .in -\n(37u .mk 32 .if \n(32>\n(31 .nr 31 \n(32 .sp |\n(31u .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@author\fP\h'|\n(41u'1.0 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2{@code}\fP\h'|\n(41u'1.5 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2{@docRoot}\fP\h'|\n(41u'1.3 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@deprecated\fP\h'|\n(41u'1.0 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@exception\fP\h'|\n(41u'1.0 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2{@inheritDoc}\fP\h'|\n(41u'1.4 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2{@link}\fP\h'|\n(41u'1.2 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2{@linkplain}\fP\h'|\n(41u'1.4 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2{@literal}\fP\h'|\n(41u'1.5 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@param\fP\h'|\n(41u'1.0 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@return\fP\h'|\n(41u'1.0 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@see\fP\h'|\n(41u'1.0 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@serial\fP\h'|\n(41u'1.2 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@serialData\fP\h'|\n(41u'1.2 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@serialField\fP\h'|\n(41u'1.2 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@since\fP\h'|\n(41u'1.1 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@throws\fP\h'|\n(41u'1.2 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2{@value}\fP\h'|\n(41u'1.4 .ta \n(80u \n(81u .nr 31 \n(.f .nr 35 1m \&\h'|\n(40u'\f2@version\fP\h'|\n(41u'1.0 .fc .nr T. 1 .T# 1 .35 .rm a+ .TE .if \n-(b.=0 .nr c. \n(.c-\n(d.-44 .LP カスタムタグについては、\-tag オプションを参照してください。 .RS 3 .TP 3 @author\ name\-text \-author オプションが使用されている場合、指定された \f2name\-text\fP を含む [作成者] エントリを生成ドキュメントに追加します。1 つのドキュメンテーションコメントに複数の \f2@author\fP タグを含めることができます。1 つの \f2@author\fP タグに 1 つの名前を指定することも、複数の名前を指定することもできます。前者の場合は、Javadoc ツールによって名前と名前の間にコンマ (\f2,\fP) と空白が挿入されます。後者の場合は、テキスト全体が、解析されることなく、生成ドキュメントにそのままコピーされます。したがって、コンマではなく、各言語に対応した名前区切り文字を使う必要があるときは、1 つのタグに複数の名前を指定してください。 .RE .LP 詳細については、「タグを使用できる場所」および .na \f2@author タグのドキュメント\fP @ .fi http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@authorを参照してください。 .LP .RS 3 .TP 3 @deprecated\ deprecated\-text 注: @Deprecated 注釈を使って特定のプログラム要素を非推奨にできます。 .RE .LP この API は動作し続けますが、この API を使用するべきではないことを示すコメントを追加します。Javadoc ツールは、 \f2deprecated\-text\fP を主説明の前に移動してイタリックにし、その前にボールドの警告「推奨されません。」を追加します。このタグは、すべてのドキュメンテーションコメント、つまり概要、パッケージ、クラス、インタフェース、コンストラクタ、メソッド、およびフィールドで有効です。 .LP \f2deprecated\-text\fP の最初の文では、少なくとも、その API が推奨されなくなった時期と、代替使用するべき API を読者に提示する必要があります。Javadoc ツールは、この最初の文だけを、概要セクションと索引にコピーします。そのあとの文では、その API が推奨されない理由を説明することもできます。代わりのAPI を指し示す \f2{@link}\fP タグ ( Javadoc 1.2 以降の場合) を含めるべきです。 .LP 詳細については、 .na \f2@deprecated タグのドキュメント\fP @ .fi http://java.sun.com/j2se/javadoc/writingdoccomments/index.html#@deprecatedを参照してください。 .RS 3 .TP 2 o Javadoc 1.2 以降では \f2{@link}\fP タグを使用します。これにより、必要な場所にインラインでリンクを作成できます。たとえば、 .nf \f3 .fl /** .fl * @deprecated As of JDK 1.1, replaced by {@link #setBounds(int,int,int,int)} .fl */ .fl .fl \fP .fi .TP 2 o Javadoc 1.1 の場合の標準形式は、 \f2@see\fP タグ (インラインは不可) を \f2@deprecated\fP タグごとに作成することです。 .RE .LP 推奨されないタグについての詳細は、 .na \f2@deprecated タグ\fP @ .fi http://java.sun.com/javase/6/docs/technotes/guides/javadoc/deprecation/index.htmlのドキュメントを参照してください。 .LP .RS 3 .TP 3 {@code\ text} \f2
{@literal}
\fP と同等です。 .LP テキストを \f2HTML マークアップ\fP または \f2入れ子になった javadoc タグ\fP として解釈せずに、text をコードフォントで表示します。このため、ドキュメンテーションコメント内で通常の山括弧 (\f2<\fP および \f2>\fP) を HTML エンティティー (\f2<\fP および \f2>\fP) の代わりに使用できます。たとえば、パラメータの型 (\f2