📅  最后修改于: 2023-12-03 15:16:20.045000             🧑  作者: Mango
AnnotatedElement getDeclaredAnnotations()
方法是Java语言中的一个反射特性,用于返回标注在该元素上的所有注解。
Annotation[] getDeclaredAnnotations()
该方法没有参数。
该方法返回与该元素直接声明的所有注解元素相关的注释。如果没有找到注释,则返回空数组。
下面是一个简单的示例,演示getDeclaredAnnotations()
方法的用法。这个例子定义了一个简单的Java类,其中包含两个基本的注释。
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface DemoAnnotation1 {
String value();
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@interface DemoAnnotation2 {
int value() default 42;
String message() default "The answer is 42.";
}
@DemoAnnotation1(value = "DemoClass")
public class DemoClass {
@DemoAnnotation2(value = 99, message = "Field value is 99.")
public String demoField;
public static void main(String[] args) throws Exception {
DemoClass obj = new DemoClass();
Class cls = obj.getClass();
// 获取类上的注释
Annotation[] annotations1 = cls.getDeclaredAnnotations();
System.out.println("类上的注释:");
for (Annotation a : annotations1)
System.out.println(a);
// 获取字段上的注释
java.lang.reflect.Field field = cls.getDeclaredField("demoField");
Annotation[] annotations2 = field.getDeclaredAnnotations();
System.out.println("字段上的注释:");
for (Annotation a : annotations2)
System.out.println(a);
}
}
运行上述代码会输出以下结果:
类上的注释:
@DemoAnnotation1(value=DemoClass)
字段上的注释:
@DemoAnnotation2(value=99, message=Field value is 99.)
上述代码中,第一次调用getDeclaredAnnotations()
返回@DemoAnnotation1
注解,而第二次调用getDeclaredAnnotations()
返回@DemoAnnotation2
注解。
AnnotatedElement getDeclaredAnnotations()
方法使得您可以访问在Java代码中声明的所有注解。 该方法返回一个注解数组,其中包含该元素上声明的所有注解的实例。 如果该元素上没有注释,则返回一个长度为零的数组。 该方法的运行时行为和语义与程序语言指定的注解信息重叠。