Javaのアノテーションの役割と歴史をまとめる。
歴史
「@」アノテーションとは、Java 1.5で導入された、
-
@Override
のようにコンパイラにヒントを与えるコメントとして生まれたのがきっかけ。
アノテーションを使用するメリット。
-
コードの正確性:
@Nullable
、@Deprecated
、@Override
などのアノテーションにより、メソッドやフィールドに重要な意味情報を追加し、コンパイラによってその情報が強制されるようにすることができる。 -
テスト・メソッド:TestNGとアノテーションが登場するまで、JUnitは リフレクションを使用してメソッドがテスト・メソッドであることを判別していました。この判別には、特別なネーミング規則が必要でした。
アノテーションの採用によって、ネーミング規則を使用する必要がなくなった。 -
永続性(Hibernateなど):アノテーションを付加することで、フィールドやメソッドをデータベースに保存されているデータと紐付けることができる。
-
依存性注入:インジェクションする必要があるクラスにアノテーションを付加し、その旨を示すことができる。
よく使うアノテーション
@Nullable
と@Nonnull
(javax.annotation)
- フィールドおよびメソッド・パラメータに付加でき、変数がnull値を取ることができるか
どうかを指定します。 - このアノテーションは非常に有用であり、Javaコンパイラ(javac)を使用する多くのツール(主要なIDEが代表的な例です)がこの2つを認識します。
- 可能な限り、常にこのアノテーションを使用するようにします。コードベースにおけるnullポインタ例外の数が急激に減ることにすぐ気付くはずです。
@Override
Java6以降必須になっている。
理由
-
このアノテーションは、親インタフェースまたは親クラスのメソッドをオーバーライドするすべてのメソッドに付加する必要がある。
-
この付加によって、意図せずにメソッドをオーバーライドしてしまうこと
-
逆にタイプ・ミスのためにオーバーライドしていなかったメソッドを「オーバーライドした」と思ってしまう事態を防ぐことができる。
参考にした記事(いつもありがとうございます)