Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

アノテーションを利用する

アノテーションそのものは、単なる名前と型の定義にすぎませんので、指定されたアノテーションに応じてどのような処理を実施するかを決めるのは、呼び出し元の責任です。
アノテーション情報は、Method#getAnnortationメソッドで取得できます。Methodオブジェクトを取得するのは、Class#getMethodメソッドの役割です。(※)

※これらクラスやそのメンバーにアクセスするための機能をリフレクションと言います。

AnnotationSample.java

package com.example.mynavi.object;

import java.lang.reflect.Method;

public class AnnotationSample {
  @Version(1.0)
  public void annotationTest() {
    System.out.println("Released");
  }

  public static void main(String[] args) {
    try {
			// annotationTestメソッドを取得
      Method m = AnnotationSample.class.getMethod("annotationTest");
			// Versionアノテーションを取得
      Version v = m.getAnnotation(Version.class);
			// Versionアノテーションが1.0以上の場合のみメソッドを実行
      if (v.value() >= 1.0) {
        m.invoke(AnnotationSample.class.newInstance());
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

この例であれば、取得したValueアノテーションの値が1.0以上の場合に、アノテーションが付与されたメソッド(ここではannotationTest)を実行します。Methodオブジェクト経由でメソッドを実行するには、invokeメソッドを利用します。

アノテーション
標準アノテーション
@interface命令
アノテーションを利用する

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職