注目記事

【Javaコード入門】アノテーション_③アノテーションを利用する

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

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

AnnotationSample.java

  1. package com.example.mynavi.object;
  2.  
  3. import java.lang.reflect.Method;
  4.  
  5. public class AnnotationSample {
  6.   @Version(1.0)
  7.   public void annotationTest() {
  8.     System.out.println("Released");
  9.   }
  10.  
  11.   public static void main(String[] args) {
  12.     try {
  13.       // annotationTestメソッドを取得
  14.       var m = AnnotationSample.class.getMethod("annotationTest");
  15.       // Versionアノテーションを取得
  16.       var v = m.getAnnotation(Version.class);
  17.      // Versionアノテーションが1.0以上の場合のみメソッドを実行
  18.       if (v.value() >= 1.0) {
  19.         m.invoke(AnnotationSample.class.getDeclaredConstructor().newInstance());
  20.       }
  21.     } catch (Exception e) {
  22.       e.printStackTrace();
  23.     }
  24.   }
  25. }

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

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

監修

山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。