📌  相关文章
📜  Java中的 AnnotatedElement getDeclaredAnnotations() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:16:20.045000             🧑  作者: Mango

Java中的 AnnotatedElement getDeclaredAnnotations() 方法及示例

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代码中声明的所有注解。 该方法返回一个注解数组,其中包含该元素上声明的所有注解的实例。 如果该元素上没有注释,则返回一个长度为零的数组。 该方法的运行时行为和语义与程序语言指定的注解信息重叠。