Java中的字段 getAnnotationsByType() 方法及示例
Java.lang.reflect.Field的getAnnotationsByType()方法用于返回与该字段元素关联的注释。这是获取 Field 对象注解的重要方法。如果没有与此 Field 元素关联的注释,则返回空数组。调用者可以修改返回的数组作为方法发送的实际对象的副本;它不会影响返回给其他调用者的数组。
句法:
public T[]
getAnnotationsByType(Class annotationClass)
参数:该方法接受annotationClass ,即注解类型对应的Class对象。
返回:如果与此元素相关联,则此方法返回指定注释类型的所有此元素的注释,否则返回长度为零的数组。
异常:如果给定的注释类为空,此方法将抛出NullPointerException 。
下面的程序说明了 getAnnotationsByType() 方法:
方案一:
// Java program to illustrate
// getAnnotationsByType() method
import java.lang.annotation.*;
import java.lang.reflect.Field;
import java.util.Arrays;
public class GFG {
// initialize field with
// default value in annotation
@annotations(32512.21)
private double realNumbers;
public static void main(String[] args)
throws NoSuchFieldException
{
// create Field object
Field field
= GFG.class
.getDeclaredField("realNumbers");
// apply getAnnotationsByType()
annotations[] annotations
= field.getAnnotationsByType(
annotations.class);
// print results
System.out.println(
Arrays
.toString(annotations));
}
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
private @interface annotations {
double value() default 99.9;
}
}
输出:
[@GFG$annotations(value=32512.21)]
方案二:
// Java program to illustrate
// getAnnotationsByType() method
import java.lang.annotation.*;
import java.lang.reflect.Field;
import java.util.Arrays;
public class GFG {
// initialize field with
// default value in annotation
@annotations("ChipherCodes@#!")
private double string;
public static void main(String[] args)
throws NoSuchFieldException
{
// create a Field object
Field field
= GFG.class
.getDeclaredField("string");
// apply getAnnotationsByType()
annotations[] annotations
= field.getAnnotationsByType(
annotations.class);
// print results
System.out.println(
Arrays.toString(
annotations));
}
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
private @interface annotations {
String value();
}
}
输出:
[@GFG$annotations(value=ChipherCodes@#!)]
参考资料: https: Java/lang/reflect/Field.html#getAnnotationsByType-java.lang.Class-