@todo
)またはインライン・タグ(たとえば{@underline}
)のいずれかとして記述できます。現在のところ、ブロック・タグレットは、そのテキスト内でインライン・タグをサポートしていません。(「ブロック・タグとインライン・タグ」を参照してください。)タグレットAPIは、次の1つのインタフェースで構成されています。
タグレットは、-tag
オプションの基盤となる機能です。-tag
オプションを使用すると、組込みタグレットが使用されて、@return
に対して生成されるのと類似したデフォルトHTML形式が生成されます。
タグレットは、次の基本手順に従って作成し、使用します。
import com.sun.tools.doclets.Taglet; // Taglet API import com.sun.javadoc.*; // Doclet API import java.util.Map; // Used in register(Map)
com.sun.javadoc
のクラスは、toString(Tag)
で使用するTag
インタフェースのためにインポートする必要があります。toString
メソッドは、カスタム・タグに渡されるテキスト引数を修正、書式指定、またはリダイレクトするためのカスタム処理を実装する場所です。
public String toString(Tag tag)
public static void register(Map tagletMap)
lib\tools.jar
ファイルに含まれています。このあとの最初の例では、JDKのインストール先をC:\Program Files\j2sdk1.4.1
と想定しています。
javac -classpath "C:\Program Files\j2sdk1.4.1\lib\tools.jar" ToDoTaglet.java
-taglet
オプションおよび-tagletpath
オプションを使用してJavadocツールを実行します。たとえば、タグレットのクラス・ファイルがcom.sun
パッケージ内に入れるように定義されており、C:\taglets\com\sun\Taglet.class
に格納されている場合は、tagletpathにC:\taglets
を設定してください。この例では、ToDoTaglet
タグを含む、パッケージcom.package1
のjavadoc
を呼び出します。
javadoc -taglet ToDoTaglet -tagletpath C:\taglets com.package1
このあとの例では、ブロック・タグレットおよびインライン・タグレットについて説明します。
@todo
を実装するブロック・タグレットの例のソース・コードは、次に含まれています。
対応するクラス・ファイルであるToDoTaglet.class
は、すでにコンパイルされ、このソース・ファイルと同じディレクトリ内に保存されています。
このタグレットは、@todo
タグの出力を書式指定します。次のタグを含むドキュメンテーション・コメントは、
/** * @todo Fix this! */
ToDo
タグレットによって、次のようなHTML出力に書式指定されます。
Fix this! |
private static final String NAME = "todo"; private static final String HEADER = "To Do:";インライン・タグではなくブロック・タグにするため、
isInlineTag
がfalseを返すように設定します。
public boolean isInlineTag() { return false; }ほかのメソッド
inField
、inMethod
、inType
、inPackage
、inOverview
でも、true
またはfalse
を指定し、このタグが使用できるソース・コードのドキュメンテーション・コメントを示します。
toString(Tag)
メソッドでは、1つの{@todo}
タグに遭遇したとき、テキストをどのように出力に挿入するかを決定します。このコードは、太字の見出しのあと、tag.text()
で指定されたテキストを含む黄色の背景の表を作成します。
public String toString(Tag tag) {` return "<DT><B>" + HEADER + "</B><DD>" + "<table cellpadding=2 cellspacing=0><tr><td bgcolor=\"yellow\">" + tag.text() + "</td></tr></table></DD>\n"; }同様に、
toString(Tag[])
メソッド(タグの1配列を取得する)では、複数の{@todo}
タグに遭遇したとき、テキストをどのように出力に挿入するかを決定します。
registerメソッドは次のとおりです。
/** * Register this Taglet. * @param tagletMap the map to register this tag to. */ public static void register(Map tagletMap) { ToDoTaglet tag = new ToDoTaglet(); Taglet t = (Taglet) tagletMap.get(tag.getName()); if (t != null) { tagletMap.remove(tag.getName()); } tagletMap.put(tag.getName(), tag); }
-tag
オプションを使用して実装することはできません。これは、インライン・タグにはデフォルトの動作がないためです。
{@underline}
を実装するインライン・タグレットの例のソース・コードは、次のファイルに含まれています。
UnderlineTaglet.class
は、すでにコンパイルされ、このソース・ファイルと同じディレクトリ内に保存されています。
このタグレットは、{@underline}
タグの出力を書式指定します。次のタグを含むドキュメンテーション・コメントは、
/** * Be sure to insert the value at the {@underline start} of the array. */次のようにHTMLで出力されます。
Be sure to insert the value at the start of the array.
private String NAME = "underline";ブロック・タグではなくインライン・タグにするため、
isInlineTag
がtrueを返すように設定します。
public boolean isInlineTag() { return true; }
inField
、inMethod
、inConstructor
、inType
、inPackage
、inOverview
の各メソッドは、ブロック・タグにのみ適用されるため、インライン・タグではすべてfalseに設定する必要があります。
toString(Tag)
メソッドでは、{@underline}
タグに遭遇したとき、テキストをどのように出力に挿入するかを決定します。このコードは、HTML下線タグ<ul>
および</ul>
でテキストを囲みます。
public String toString(Tag tag) { return "<u>" + tag.text() + "</u>"; }ブロック・タグの場合とは違って、インタイン・タグの配列を処理することはできません。そのため、インライン・タグでは、
toString(Tag[])
メソッド(タグの1配列を取得する)は無視されます。
System.exit()
を呼び出すだけで、エラーを報告し、Javadocツールを停止できます。
警告 - タグレットは、ドックレット・インスタンスで指定されたMessageRetrieverを使用して、警告を報告できます。MessageRetrieverはConfigurationオブジェクトから取得されます。Configurationオブジェクトはドックレットから取得されます。たとえば、タグレットが標準ドックレットで使用するように設計されている場合、ConfigurationはstaticメソッドであるStandard.configuration()
を使用して取得できます。例として、SimpleTaglet
はこのようにして警告を出力します(これは-tag
オプションのデフォルト・タグレット)。