Java-アノテーション

アノテーションとは

コンパイラや開発ツールに対して注釈(プログラム的な意味付け)を伝えるものです。

アノテーションはJDK1.5からサポートされた機能となります。


Overrideアノテーション

そのメソッドがスーパークラスのメソッドをオーバーライドしていることを示す。

メソッドのオーバーライドの記述ミスなどを確実に防ぐためです。



public class MyClass{
    @Override
    public String toString() {
        return super.toString();
    }
}

Deprecatedアノテーション

対象となるクラスやメソッドが非推奨であることを情報として付加する。


public class MyClass{
    @Deprecated
    public void function() {
        /* process */
    }
}


SuppressWarningsアノテーション

引数で指定した特定の警告メッセージをJavaコンパイラに与えず無視する。


@SuppressWarnings( "serial" )
@SuppressWarnings( value = {"unchecked", "deprecation" } )

SuppressWarningsに設定できるパラメータ

all すべての警告を無視する
deprecation 使用すべきでないクラスやメソッドを使用したときの「unchecked」警告を無視する
fallthrough switchブロックにbreakなどはない場合の「deprecation」警告を無視する
finally finallyブロックは正常に完成できないときの警告を無視する
path コンパイルオプションのclasspathやsourcepathでパスが存在しない場合の警告を無視する
serial 直列化可能なクラスにserialVersionUIDが未定義の時の警告を無視する
unchecked 安全でない型のカーストなどの場合の「unchecked」警告を無視する
unused 使用されていない変数やメソッドが存在した場合の警告を無視する

Targetアノテーション

定義したいアノテーションがどこに適用されるべきかを指し示すメタアノテーション。

アノテーションはどこに適用されるべきかを指定します。


@Target(ElementType.METHOD)
@Target(value={ElementType.CONSTRUCTOR, ElementType.FIELD})  

ElementType.ANNOTATION_TYPE 他のアノテーションに適用される
ElementType.CONSTRUCTOR コンストラクタ
ElementType.FIELD フィールド
ElementType.LOCAL_VARIABLE ローカル変数
ElementType.METHOD メソッド
ElementType.PACKAGE パッケージ
ElementType.PARAMETER パラメータ
ElementType.TYPE クラス、インタフェース、または列挙型などの型

Retentionアノテーション

アノテーションの配置方法を設定するメタアノテーション。


@Retention(RetentionPolicy.RUNTIME)

RetentionPolicy.CLASS アノテーションはクラスファイルに残されますが、実行時JVMにロードされません。
RetentionPolicy.RUNTIME アノテーションはクラスファイルに残されるほか、実行時JVMにもロードされます。
RetentionPolicy.SOURCE コンパイル時によって破棄されます。


関連ページ