「Java」Field.getAnnotationメソッドでアノテーションを呼び出す

2022年6月26日

1.アノテーションの定義
書式
@interface アノテーション名
使用例

package com.arkgame.study.tm;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

//アノテーションの定義
@Retention(RetentionPolicy.RUNTIME)
@interface TestAnnotation {
      //関数nameの定義
      public String name();
      //関数valueの定義
      public String value();
}

2.アノテーションを利用
書式
@アノテーション名(name = “yamada", value = “tokyo")
public 変数の型 変数名
使用例

package com.arkgame.study.tm;

public class UserInfo {
      //アノテーションの利用
      @TestAnnotation(name = "yamada", value = "tokyo")
      public String username;

      public String getUsername() {
            return username;
      }
      public void setUsername(String username) {
            this.username = username;
      }
}

3.動作確認クラス
書式
Field field =クラス名.class.getField(変数名)
使用例

package com.arkgame.study.tm;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;

public class AnnotationDemo {

      public static void main(String[] args) throws NoSuchFieldException, SecurityException {
            //UserInfoクラスのフィールドを設定
            Field field = UserInfo.class.getField("username");
            //TestAnnotaionアノテーションを呼び出す
            Annotation anno = field.getAnnotation(TestAnnotation.class);
            //演算子instanceofを利用
            if (anno instanceof TestAnnotation) {
                  TestAnnotation ta = (TestAnnotation) anno;
                  //アノテーションのnameとvalueを出力
                  System.out.println("name: " + ta.name());
                  System.out.println("value: " + ta.value());
            }
      }

}

実行結果

name: yamada
value: tokyo

 

Java

Posted by arkgame