アノテーションとは

アノテーションとは、Javaのクラス、メソッド又はパッケージに対するメタデータであり、注釈として記入する。アノテーションはjava.lang.Annotationインタフェースを継承したインタフェースである。

アノテーションの使用例を示す。

class Foo {
  @javax.annotaion.Resource
  public void bar() {
    // things to do
  }
}

パッケージ又はアノテーションをインポート(import)すれば、パッケージ名は省略できる。

import javax.annotaion.Resource;

class Foo {
  @Resource
  public void bar() {
    // things to do
  }
}

java.langパッケージのアノテーションに限り、パッケージを明示的にインポートしなくてもパッケージ名を省略できる。たとえば、java.lang.Deprecatedアノテーションは次のように記述できる。

class Foo {
  @Deprecated
  public void bar() {
    // things to do
  }
}

Javaアノテーション一覧

Javaアノテーション一覧
分類 アノテーション 説明
Java SE java.lang.Deprecated クラスやメソッドが非推奨であることを示す。
java.lang.Override メソッドがスーパークラスのメソッドをオーバーライドしていることを示す。
java.lang.SuppressWarning 引数で指定した警告をJavaコンパイラが出力しないようにする。
Java EE javax.annotation.Resource 外部リソース(JDBCデータソース、JMS送り先、接続ファクトリ)への依存性を示す。
JPA javax.persistence.Column 永続プロパティまたはフィールド用のマップされた列を指定する。
javax.persistence.Entity クラスがエンティティであることを指定する。
javax.persistence.GeneratedValue 主キー列にユニークな値を自動で生成、付与する方法を指定する。
javax.persistence.GenerationType 主キーの値の生成戦略
javax.persistence.Id エンティティの主キーを指定する。
javax.persistence.Table アノテーション付きエンティティの主テーブルを指定する。
FindBugs edu.umd.cs.findbugs.annotations.CheckForNull このアノテーションを付けたフィールド、メソッド及びパラメータはnullである可能性がある。したがって、これらを使用する際はnullチェックをすべきである。
edu.umd.cs.findbugs.annotations.CheckReturnValue このアノテーションを付けたメソッドは、呼出し後に戻り値をチェックすべきである。
edu.umd.cs.findbugs.annotations.DefaultAnnotation このアノテーションを付けたパッケージ又はクラス内すべてのフィールド、メソッド及びパラメータに対して、指定したアノテーションを適用する。
edu.umd.cs.findbugs.annotations.DefaultAnnotationForFields このアノテーションを付けたパッケージ又はクラス内すべてのフィールドに対して、指定したアノテーションを適用する。
edu.umd.cs.findbugs.annotations.DefaultAnnotationForMethods このアノテーションを付けたパッケージ又はクラス内すべてのメソッドに対して、指定したアノテーションを適用する。
edu.umd.cs.findbugs.annotations.DefaultAnnotationForParameters このアノテーションを付けたパッケージ又はクラス内すべてのパラメータに対して、指定したアノテーションを適用する。
edu.umd.cs.findbugs.annotations.NonNull このアノテーションを付けたフィールドやパラメータはnullであってはならない。このアノテーションを付けたメソッドはnullを戻り値として返してはならない。
edu.umd.cs.findbugs.annotations.Nullable このアノテーションを付けたフィールド、メソッド及びパラメータはnullである可能性がある。
edu.umd.cs.findbugs.annotations.OverrideMustInvoke このアノテーションを付けたメソッドがオーバーライドされた場合、オーバーライドしたメソッド内でsuperを呼び出すべきである。
edu.umd.cs.findbugs.annotations.SupressWarning このアノテーションを付けたパッケージ、フィールド、メソッド及びパラメータは、指定した警告の出力が抑制される。
Seasar org.seasar.framework.aop.annotation.RemoveSession メソッドの実行後にHTTPセッションから属性を削除するインターセプタ(RemoveSessionInterceptor)を適用する。
org.seasar.s2csv.csv.annotation.CSVValidator このアノテーションを付けたフィールドのバリデーション実行メソッドを指定する。
org.seasar.s2csv.csv.annotation.column.CSVColumn このフィールドがCSV関連項目であることを示す。
org.seasar.s2csv.csv.annotation.column.CSVMaxByteLength このアノテーションを付けたフィールドの最大バイト数をチェックする。
org.seasar.s2csv.csv.annotation.column.CSVMinByteLength このアノテーションを付けたフィールドの最小バイト数をチェックする。
org.seasar.s2csv.csv.annotation.column.CSVRequired このアノテーションを付けたフィールドの必須チェックを行う。
org.seasar.s2csv.csv.annotation.entity.CSVEntity このアノテーションを付けたクラスがCSVエンティティであることを示す。
スポンサーリンク

Java SEのアノテーション

@Deprecated

import java.lang.Deprecated;

@Deprecated
public class DeprecatedClass {

    @Deprecated
    public int deprecatedField;

    @Deprecated
    public void depreatedMethod() {
        //
    }
}

@Override

スーパークラスのメソッド宣言をオーバーライドすることを示す。もしOverrideアノテーションを付けているにもかかわらず、スーパークラスのメソッドをオーバーライドしていない場合は、コンパイラがエラーメッセージを生成する。

たとえば、インタフェース実装クラスにおいて、インタフェース経由でアクセスすることを想定したメソッドにOverrideアノテーションを付ける。

EmployeeServiceインタフェースで以下のメソッドが定義されているとする。

public int insert(Employee entity) throws EntityExistsException;

実装クラスEmployeeServiceImplでは、@Overrideアノテーションを付ける。

@Override
public int insert(Employee entity) throws EntityExistsException
{
    ...
}

@SuppressWarning

@SuppressWarningアノテーションは、引数で指定した警告をJavaコンパイラが出力しないようにする。

@SupressWarning("警告名")
@SupressWarning({"警告名1","警告名2", ...})
@SupressWarningに指定する警告
警告 抑制される警告
all すべての警告
cast 不要なキャスト
deprecation 非推奨のメソッドを使用している
fallthrough switch文でbreakさせずに次のcaseに処理が移っている
finally finally節が正常に完了できない
serial Serializableインタフェースを実装しているのにSerialVersionUIDを定義していない
unchecked 無検査キャスト
unused 未使用の変数がある

Java EEのアノテーション

@Resource

@Resource
private EmployeeDao employeeDao;

@Resource(name="fooDataSource")
private void setDataSource(DataSource ds) {
    ...
}
スポンサーリンク