Java Field getAnnotation()方法及示例
java.lang.reflect.Field 的 getAnnotation() 方法用于返回指定类型的Field对象的注释,如果存在这样的注释,则返回null。
语法
public <T extends Annotation> T
getAnnotation(Class<T> annotationClass)
参数: 该方法 的annotationClass 是对应于注释类型的Class对象。
返回 :如果该元素上存在指定的注释类型,该方法返回该元素的 注释 ,否则为空。
异常 :如果给定的注释类是空的,这个方法会抛出 NullPointerException 。
以下程序说明了getAnnotation()方法:
程序1 :
// Java program to illustrate
// getAnnotation() method
import java.lang.annotation.*;
import java.lang.reflect.AnnotatedType;
import java.lang.reflect.Field;
import java.util.Arrays;
public class GFG {
// initialize field with
// default value in annotation
@annotations(3125462345.32155365326)
private double realNumbers;
public static void main(String[] args)
throws NoSuchFieldException
{
// create Field object
Field field
= GFG.class
.getDeclaredField("realNumbers");
// apply getAnnotation()
annotations annotations
= field.getAnnotation(
annotations.class);
// print results
System.out.println(annotations);
}
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
private @interface annotations {
double value() default 99.9;
}
}
输出:
@GFG$annotations(value=3.1254623453215537E9)
程序2
// Java program to illustrate
// getAnnotation() method
import java.lang.annotation.*;
import java.lang.reflect.AnnotatedType;
import java.lang.reflect.Field;
import java.util.Arrays;
public class GFG {
private int @SpecialNumber[] number;
public static void main(String[] args)
throws NoSuchFieldException
{
// get Field object
Field field
= GFG.class
.getDeclaredField("number");
// apply getAnnotation() method
AnnotatedType annotatedType
= field.getAnnotation();
// print the results
System.out.println(
"Type: "
+ annotatedType.getType()
.getTypeName());
System.out.println(
"Annotations: "
+ Arrays.toString(
annotatedType
.getAnnotations()));
System.out.println(
"Declared Annotations: "
+ Arrays.toString(
annotatedType
.getDeclaredAnnotations()));
}
@Target({ ElementType.TYPE_USE })
@Retention(RetentionPolicy.RUNTIME)
private @interface SpecialNumber {
}
}
输出:
@GFG$annotations(value=WelcomeTOGFG)
参考文献 : https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html#getAnnotation-