アノテーションを利用する
アノテーションそのものは、単なる名前と型の定義にすぎませんので、指定されたアノテーションに応じてどのような処理を実施するかを決めるのは、呼び出し元の責任です。
アノテーション情報は、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メソッドを利用します。