アノテーション
主なアノテーション |
説明 |
@Override |
スーパークラスのメソッドをオーバーライドすることを示す |
@FunctionalInterface |
関数型インターフェースであることを示す |
@Deprecated |
非推奨の要素であることを示す |
@SuppressWarnings |
コンパイラの警告を無効にする |
@SafeVarargs |
安全でない可変長引数に対する警告を無視する |
警告のオン/オフ
非推奨のメソッドの宣言側 |
非推奨のメソッドの呼び出し側 |
警告のオン/オフ |
@Deprecated |
@SuppressWarningsなし |
オン |
@Deprecated |
@SuppressWarnings("deprecation") |
オフ |
@Deprecated(forRemoval = "true") |
@SuppressWarnings("deprecation") |
オン |
@Deprecated(forRemoval = "true") |
@SuppressWarnings("removal") |
オフ |
メタアノテーション
主なアノテーション |
説明 |
@Documented |
Javadoc API ドキュメントの出力にも反映するようにする |
@Target |
アノテーションを付与する要素を限定する |
@Retention |
アノテーションをソースコードもしくはクラスファイルまで保持するかなどを制御する
|
@Inherited |
サブクラスにアノテーションを引き継ぐことを示す |
@Repeatable |
同じ場所に複数回適用する |
RetentionPolicyの列挙子
種類 |
内容 |
CLASS |
アノテーションに関する情報はクラスファイルには残っているものの、実行時に破棄される。クラスファイルに事前処理するようなプログラムを作るときに使用する
|
RUNTIME |
実行時までアノテーションに関する情報を保持する。実行時にアノテーションを処理をするために使用する
|
SOURCE |
コンパイル時にアノテーションに関する情報は破棄される。コンパイラにアノテーションを処理させたいときに使用する。
|
実装例
public @interface Sample {}
@Targetアノテーションを指定しなかった場合は下記がアノテーションの対象になる。