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 | コンパイル時によって破棄されます。 |