Javaのプログラムを組むうえで「アノテーション」というキーワードが出てきます。
「アノテーション」とは何でしょうか?
アノテーションとはコーディング中の「注釈」を意味する言葉で、コードを書くときに大切な情報に印をつけることができるものです。
アノテーションをつけることで、Javaのコードがより見やすくなるだけでなく、ドキュメント(Javadoc)を出力した時に大事な情報としてコメントされます。
いきなり、ドキュメントの「javadoc」というキーワードが出てきてしまったので、以下の順番で説明していきたいと思います。
「Javadoc」とは
「Javadoc」とはJavaのコードから出力できるドキュメント(クラス仕様書)にあたり、プログラムコードにコメント(アノテーション)を記述することで、ドキュメントを出力した時に意味のある説明文として出力できます。
以下のプレグラムを例に説明していきたいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * ファイルを読み込むクラス * */ public class FileRead { /** * FileReaderを使用してファイルを読み込みます。 * @param filePath ファイルパス * @return 読み込み内容 */ public static List<String> readFile(String filePath) { BufferedReader br = null; FileReader fr = null; List<String> list = new ArrayList try { // FileReaderで読み込むファイルを指定 fr = new FileReader(filePath); // 文字型入力ストリームからテキストを読み込み br = new BufferedReader(fr); // 1行ごとに読み込み String line = null; while ((line = br.readLine()) != null) { list.add(line); } return list; } catch (IOException e) { e.printStackTrace(); return null; } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } } } |
例えば上記プログラムをドキュメント(javadoc)として出力した場合、下記のようなドキュメントが出力されます。
わかりましたでしょうか?プログラムのコメントに記述した「@param」、「@return」の内容がドキュメント(javadoc)では「パラメータ」、「戻り値」として出力されています。
「アノテーション」とは
先ほど説明した通り、ざっくり行ってしまえば、プログラム中の「@param」「@return」など「@(アットマーク)」から始まるコメントやコードをアノテーションと言います。
具体的にアノテーションを記述する箇所は
- クラス宣言
- インタフェース宣言
- メソッド
- メンバ変数
- コード中の記載が必要な個所
などがあげられます。
注釈の為に必要なアノテーションですが、記述することで多くの役割を果たします。
例えば
- 後で見直しが必要な個所への目印
- コンパイラの警告メッセージを出なくする
- プログラムの動作を変更させる
- 他のプログラマーにコーディング規約を知らせる
- スペルミスをしたときにエラーを出せる
などなど。
よく使われる「アノテーション」
実際にどのようなアノテーションがあるのか、よく使われるアノテーションと意味を説明します。
ここで説明しているアノテーションはごく一部ですが、最低限このくらい覚えていれば開発時に役に立つでしょうという内容をピックアップしています。
プログラムの実装でよく利用するアノテーション
アノテーション | 意味・役割 |
---|---|
@Override |
スーパークラスのメソッドをオーバーライドしていることを明示的にします。 (オーバーライドされたメソッドであることが視覚的にわかりやすくします) |
@Deprecated |
メソッドの仕様が非推奨であることを明示的にします。 利用すると警告メッセージがコンパイル時に表示されるようになるが、下位互換などの理由により、削除できない(残す必要がある)場合に利用します。 |
@SuppressWarning |
コンパイル時のエラーを非表示にすることができます。 コンパイル時に警告が出るが、あらかじめ問題ないことが保証されており、強引に警告を無視したい場合に利用します。 |
Javadocを意識する為によく利用するアノテーション
アノテーション | 意味・役割 |
---|---|
@author |
プログラムを開発した人の名前を記述します。 |
@version |
クラスやメソッドのバージョンを記述します。 |
@param |
コンストラクタやメソッドに引き渡す引数の説明を記述します。 |
@return |
メソッドの戻り値の説明を記述します。 |
@exception |
メソッド内で発生する例外情報の説明を記述します。 |
チーム内で情報共有の為によく利用するアノテーション
アノテーション | 意味・役割 |
---|---|
@TODO |
あとで追加、修正するべき機能や処理の場合に記述します。 (仕様が未確定の場合など、やり残している点があることを意味します。) |
@NOTE |
経緯などの説明を記述します。(なぜこうなったか?など) |
わかりましたでしょうか?アノテーションの役割や便利さが・・・。