@interface命令
独自のアノテーションを定義する – @interface命令- @intarface name {
- definiton
- }
- name:アノテーション名
- definition:アノテーションの定義
@interface命令を利用することで、アノテーションを自分で定義することもできます。たとえば以下は、Versionアノテーションを定義する例です。
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @Inherited public @interface Version { double value(); }
アノテーション定義では、アノテーションそのものの情報を定義するためのアノテーション(メタアノテーション)を付与できます。以下に利用できる主なメタアノテーションをまとめます。
主なメタアノテーション | |
---|---|
アノテーション | 概要 |
@Target | アノテーションを付与できる対象(TYPE、METHOD、FIELD、PARAMETERなど) |
@Rentention | アノテーション情報が維持される範囲(SOURCE、CLASS、RUNTIME) |
@Inherited | アノテーション情報がサブクラスにも継承されるか |
@interface命令の配下には、アノテーションで利用できる属性を指定します。属性は、抽象メソッドと同じく、型と名前のセットで表します。
このように定義された属性は、一般的に「@アノテーション名(属性名=値,…)」の形式で指定できます。ただし、属性名がvalueのときは名前を省略して「@アノテーション名(値)」のように記述できます。
たとえば、以下はVersionアノテーションを指定したannotationTestメソッドの例です。
AnnotationSample.java
package com.example.mynavi.object; public class AnnotationSample { @Version(1.0) public void annotationTest() { System.out.println("Released"); } }