コメント(// と /* */ と /** */)
『Java』のコメントは『//』による一行コメント、『/* */』によるブロックコメント、そしてドキュメントコメントの『/** */』(Javadoc)の3種類があります。Javadocは標準ツール『javadoc』でHTMLドキュメントを自動生成する仕組みで、JavaのAPIドキュメント(Javase API)自体もこの形式で記述されています。
構文
// 一行コメント — // から行末までがコメントになります。 int x = 10; // 行末コメント — コードの後にも書けます。 /* ブロックコメント — /* から */ までの範囲がコメントになります。 複数行にわたるコメントを書くときに使います。入れ子にはできません。 */ /** * Javadocコメント — /** で始めるブロックコメントです。 * クラス・メソッド・フィールドの直前に書きます。 * javadoc ツールでHTMLドキュメントを生成できます。 * * @param paramName 引数の説明 * @return 戻り値の説明 * @throws ExceptionClass 発生条件の説明 */
コメントの種類
| 種類 | 書き方 | 概要 |
|---|---|---|
| 一行コメント | // テキスト | 『//』から行末までがコメントになります。コードの右側に短い補足を添えるときによく使います。 |
| ブロックコメント | /* テキスト */ | 複数行にまたがるコメントを書くときに使います。入れ子にはできません。 |
| Javadocコメント | /** テキスト */ | クラス・メソッド・フィールドを文書化する特殊なブロックコメントです。javadocツールでHTMLドキュメントを生成できます。 |
Javadocの主なタグ
Javadocコメントでは『@』で始まるブロックタグを使って情報を構造化します。IntelliJ IDEAやEclipseなどのIDEはJavadocを読み取り、コード補完やホバー表示に活用します。
| タグ | 概要 |
|---|---|
| @param 名前 説明 | メソッドの引数を説明します。引数ごとに1行書きます。 |
| @return 説明 | メソッドの戻り値を説明します。戻り値が void のメソッドには書きません。 |
| @throws 例外クラス 説明 | スローされる可能性のある例外を記述します。チェック例外は必ず書きます。 |
| @exception 例外クラス 説明 | @throws の別名です。同じ意味です。 |
| @deprecated 説明 | 非推奨であることを示します。代替手段を案内します。合わせて @Deprecated アノテーションも付けます。 |
| @see 参照先 | 関連するクラス・メソッド・外部URLへの参照を記述します。 |
| @since バージョン | その要素が追加されたバージョンを記述します。 |
| @version バージョン | クラスのバージョン情報を記述します。クラスレベルのJavadocで使います。 |
| @author 名前 | 著者名を記述します。クラスレベルのJavadocで使います。 |
| {@code テキスト} | インライン記法です。テキストをコードとして整形します。 |
| {@link クラス#メソッド} | インライン記法です。他のクラス・メソッドへのハイパーリンクを生成します。 |
『javadoc』コマンドを実行することでHTMLドキュメントを生成できます。
javadoc -d doc -sourcepath src -subpackages com.example
コメントを書くべき場所・書かなくてよい場所
| 判断 | 場面 | 理由 |
|---|---|---|
| 書くべき | 「なぜこう実装したか」の理由 | コードを読むだけではわからない設計意図やトレードオフを残しておくと、将来の自分や他の開発者が助かります。 |
| 書くべき | 複雑なアルゴリズムや計算式 | 何をしているか一見でわかりにくい処理には、動作の概要を補足します。 |
| 書くべき | 公開クラス・パブリックメソッド・フィールド | Javadocコメントを付けておくと、IDEのホバー表示やjavadocコマンドでのHTMLドキュメント生成に活用できます。 |
| 書くべき | デバッグ中の一時的な無効化 | コメントアウトした理由や期限を残しておくと、後で削除し忘れるリスクが減ります。 |
| 書かなくてよい | コードを読めば明らかな処理 | 自明な説明はノイズになります。変数名・メソッド名をわかりやすくすれば不要になります。 |
| 書かなくてよい | 変更履歴・削除したコード | バージョン管理(git)があるため、コメントに古いコードや変更日を残す必要はありません。 |
サンプルコード
CommentBasic.java
// CommentBasic.java — Java のコメント構文の基本的な使い方です。
public class CommentBasic {
/* 配列の要素数を定数として定義します */
private static final int ITEM_COUNT = 3;
public static void main(String[] args) {
// 商品名と価格の配列を定義します
String[] items = {"widget", "gadget", "device"};
int[] prices = {1200, 3500, 800}; // 税抜価格
int total = 0;
for (int i = 0; i < ITEM_COUNT; i++) {
System.out.printf("%-10s %5d yen%n", items[i], prices[i]);
total += prices[i];
}
System.out.println("----------");
System.out.printf("%-10s %5d yen%n", "Total", total);
}
}
コンパイルして実行すると次のようになります。
$ javac CommentBasic.java && java CommentBasic widget 1200 yen gadget 3500 yen device 800 yen ---------- Total 5500 yen
Calculator.java
/** * 数値計算ユーティリティクラスです。 * *整数配列を対象とした基本的な統計計算メソッドを提供します。
* * @author example * @since 1.0 */ public class Calculator { /** * 整数配列の合計値を計算して返します。 * * @param values 合計を計算する整数の配列 * @return 配列全要素の合計値 * @throws IllegalArgumentException values が null の場合 */ public static int sum(int[] values) { if (values == null) { // null はサポート外なので例外をスローします throw new IllegalArgumentException("values must not be null"); } int total = 0; for (int v : values) { total += v; } return total; } /** * 整数配列の平均値を計算して返します。 * *配列が空の場合は {@code 0.0} を返します。
* * @param values 平均を計算する整数の配列 * @return 平均値(double)。配列が空の場合は 0.0。 * @throws IllegalArgumentException values が null の場合 * @see #sum(int[]) */ public static double average(int[] values) { if (values == null) { throw new IllegalArgumentException("values must not be null"); } if (values.length == 0) { return 0.0; /* 空配列のゼロ除算を防ぎます */ } /* 整数除算を避けるためキャストします */ return (double) sum(values) / values.length; } /** * @deprecated {@link #average(int[])} を使ってください。 */ @Deprecated public static double mean(int[] values) { return average(values); } public static void main(String[] args) { int[] scores = {85, 92, 78, 95, 60}; System.out.println("Sum: " + sum(scores)); System.out.printf("Average: %.1f%n", average(scores)); } }
コンパイルして実行すると次のようになります。
$ javac Calculator.java && java Calculator Sum: 410 Average: 82.0
概要
Javaのコメントは一行コメント(『//』)、ブロックコメント(『/* */』)、Javadocコメント(『/**』で始めるブロックコメント)の3種類です。一行コメントはコードの右側に補足を添えるときや処理を1行コメントアウトするときに使い、ブロックコメントは複数行の説明に使います。ブロックコメントは入れ子にできない点に注意が必要です。
Javadocコメントはクラス・パブリックメソッド・フィールドの直前に書く慣習があります。『@param』『@return』『@throws』『@deprecated』など豊富なタグで情報を構造化でき、標準ツール『javadoc』でHTMLドキュメントを自動生成できます。JDKのAPIドキュメント自体もこの形式で記述されています。IntelliJ IDEAやEclipseなどのIDEはJavadocを読み取り、コード補完やホバー表示に活用するため、パブリックAPIには積極的に付けておくと利便性が高まります。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。