アノテーション
アノテーションを作る・記載した情報を取得するサンプル
はじめに、アノテーションを作ります。こんな感じ。
■アノテーションの作成サンプル
1 2 3 4 5 6 7 8 9 10 11 12 | import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD, ElementType.METHOD}) public @interface SampleAnnotation { String name() default "hoge"; int value() default -1; } |
次に、アノテーションをフィールドとメソッドに適用します。
■アノテーションに記載した情報を取得するサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class AnnotationTest { @SampleAnnotation(name = "fieldAnnotation", value = 123) private String str = null; @SampleAnnotation(name = "methodAnnotation", value = 234) private int identity(int val) { return val; } public static void main(String[] args) { try { //フィールドのアノテーションを取得 SampleAnnotation sa1 = AnnotationTest.class.getDeclaredField("str").getAnnotation(SampleAnnotation.class); System.out.println(sa1.name()); System.out.println(sa1.value()); //メソッドのアノテーションを取得 SampleAnnotation sa2 = AnnotationTest.class.getDeclaredMethod("identity",int.class).getAnnotation(SampleAnnotation.class); System.out.println(sa2.name()); System.out.println(sa2.value()); } catch(Exception e) { e.printStackTrace(); } } } |
実行結果
フィールドとメソッドのアノテーションに記載した内容が出力されます。
1 2 3 4 | fieldAnnotation 123 methodAnnotation 234 |
サンプルの解説
アノテーションは、@interfaceで作ります。
また、作るときには、メタアノテーションを付けておきます。
@Retention(RetentionPolicy.RUNTIME)は、実行時に使えるように。
@Target({ElementType.FIELD, ElementType.METHOD})は、フィールドとメソッドで使えるように。です。
アノテーションの情報を取得するには、リフレクションが手っ取り早いと思います。
このサンプルでは、フィールドとメソッドに付けたアノテーションの情報を取得しています。