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

2022年6月26日

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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();
}
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(); }
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 変数の型 変数名
使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
}
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; } }
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(変数名)
使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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());
}
}
}
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()); } } }
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());
            }
      }

}

実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
name: yamada
value: tokyo
name: yamada value: tokyo
name: yamada
value: tokyo

 

Java

Posted by arkgame