目次へ

2005.12.12 株式会社四次元データ CTO 畠中晃弘

7.2. アノテーションの定義

アノテーションは独自に定義することも可能です。アノテーションはクラスやインタフェースと同じようにひとつの型です。したがって、アノテーションはパッケージに属しますし、public なアノテーション型は同名のソースファイルに記述する必要があります。

アノテーションの宣言は interface の定義と似ており、「interface」の前に「@」をつけることでアノテーションの宣言となります。以下にアノテーションの定義例を示します。

public @interface Deprecated {}

これは標準アノテーション型の Deprecated アノテーションの定義の一部です。このように基本的なアノテーションは型定義の本体(中カッコで囲まれた部分)は空です。このようなアノテーションを「マーカーアノテーション」と呼びます。

アノテーション定義の本体にはメソッド宣言を記述することができます。このメソッド宣言はアノテーション型の「要素」と呼ばれます。

public @interface A {
    String value();
}

このアノテーションでは value という String 型の要素が定義されています。要素名は任意に指定することができますが、要素が一つしかないアノテーションでは通常「value」という名前を用います。要素の値はアノテーションの使用時に個別に設定することができます。

@A("foo") public void a() {
   ...
}

本来は要素の値を指定するときは要素名を「@A(value="foo")」といったように指定しなければいけませんが、「value」という名前は特別に省略することができます。

アノテーションは複数の要素を定義することができますし、配列型の要素を持つこともできます。

public @interface B {
    String[] b();
    int c();
}

このアノテーションを利用するには、たとえば次のように記述します。

@B(
    b={"foo","bar"},
    c=10
)
public void b() {
  ...
}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp