スポンサーリンク

アノテーションとは

アノテーションとは、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 @Deprecated
@Override
@SuppressWarning
Java EE @Resource
Bean Validation @AssertFalse
@AssertTrue
@DecimalMax
@DecimalMin
@Digits
@Future
@Max
@Min
@NotNull
@Null
@Past
@Pattern
@Size
@Valid
EJB @TransactionAttribute
Guice @Provides
JAX-RS @Consumes
@Context
@CookieParam
@DefaultValue
@DELETE
@FormParam
@GET
@HeaderParam
@MatrixParam
@Path
@PathParam
@POST
@Produces
@PUT
@QueryParam
JAX-WS @HandlerChain
@OneWay
@SOAPBinding
@WebMethod
@WebParam
@WebResult
@WebService
JAXB @XmlSeeAlso
JPA @Column
@Entity
@GeneratedValue
@GenerationType
@Id
@Table
JUnit @After
@AfterClass
@Before
@BeforeClass
@Ignore
@Test
FindBugs @CheckForNull
@CheckReturnValue
@DefaultAnnotation
@DefaultAnnotationForFields
@DefaultAnnotationForMethods
@DefaultAnnotationForParameters
@NonNull
@Nullable
@OverrideMustInvoke
@SupressWarning
Seasar @CSVColumn
@CSVEntity
@CSVMaxByteLength
@CSVMinByteLength
@CSVRequired
@CSVValidator
@RemoveSession
Spring Framework @Validated

@java.lang.Deprecated

@java.lang.Deprecatedは、クラスやメソッドが非推奨であることを示すアノテーションである。

import java.lang.Deprecated;

@Deprecated
public class DeprecatedClass {

    @Deprecated
    public int deprecatedField;

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

@java.lang.Override

@java.lang.Overrideは、メソッドがスーパークラスのメソッドをオーバーライドしていることを示すアノテーションである。

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

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

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

public int insert(Employee entity) throws EntityExistsException;

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

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

@java.lang.SuppressWarning

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

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

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

@javax.annotation.Resource

@javax.annotation.Resourceは、外部リソース(JDBCデータソース、JMS送り先、接続ファクトリ)への依存性を示すアノテーションである。

@Resource
private EmployeeDao employeeDao;

@Resource(name="fooDataSource")
private void setDataSource(DataSource ds) {
    ...
}

Bean Validation

Bean Validationとは、バリデーション(入力チェック)用のフレームワークである。Bean Validationでは入力チェックのルール(制約:constraints)をアノテーションで定義する。JavaBeansのプロパティが取り得る値や条件をアノテーションとして指定することで、バリデーションが実行される。nullチェックなどの汎用的な入力チェックやそのエラーメッセージはあらかじめ定義されている。独自のアノテーションやバリデーションロジック、エラーメッセージを定義することもできる。

@javax.validation.constraints.AssertFalse

アノテーションが付けられた要素はfalseでなければならない。

@javax.validation.constraints.AssertTrue

アノテーションが付けられた要素はtrueでなければならない。

@javax.validation.constraints.DecimalMax

アノテーションが付けられた要素は数値かつ指定した最大値以下でなければならない。

@javax.validation.constraints.DecimalMin

アノテーションが付けられた要素は数値かつ指定した最小値以上でなければならない。

@javax.validation.constraints.Ditits

アノテーションが付けられた要素は指定した許容範囲内の数値でなければならない。

@javax.validation.constraints.Future

アノテーションが付けられた要素は将来の日付でなければならない。

@javax.validation.constraints.Max

アノテーションが付けられた要素は数値かつ指定した最大値以下でなければならない。

@javax.validation.constraints.Min

アノテーションが付けられた要素は数値かつ指定した最小値以上でなければならない。

@javax.validation.constraints.NotNull

アノテーションが付けられた要素はnull以外でなければならない。

@javax.validation.constraints.Null

アノテーションが付けられた要素はnullでなければならない。

@javax.validation.constraints.Past

アノテーションが付けられた要素は過去の日付でなければならない。

@javax.validation.constraints.Pattern

アノテーションが付けられた要素は指定した正規表現にマッチしなければならない。

@javax.validation.constraints.Size

アノテーションが付けられた要素は指定した境界に含まれなければならない。

@java.validation.Valid

プロパティ又はメソッドパラメータ、メソッド戻り値をバリデーション連鎖としてマークする。

このエントリーをはてなブックマークに追加
スポンサーリンク