📜  Java中的 AnnotatedElement getDeclaredAnnotationsByType() 方法及示例(1)

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

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

简介

Java中的 AnnotatedElement 接口是所有程序元素(类、接口、方法、字段等)的超级接口,它定义了关于程序元素的注释的访问方法。其中,getDeclaredAnnotationsByType() 方法返回该元素上存在的指定类型的所有注释。该方法用于在运行时通过反射获取元素上的注释。

语法
public <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotationClass)

该方法接受一个 Class 类型的参数,表示要获取的注释类型。

方法返回值为一个泛型数组,其中包含指定类型的所有注释。如果没有找到指定类型的注释,则返回长度为0的数组。

示例

下面我们通过一个简单的示例来演示 getDeclaredAnnotationsByType() 方法的使用。

假设我们定义了一个注解 @MyAnnotation,它包含一个 int 类型的属性 value。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
    int value() default 0;
}

我们在一个简单的类中使用该注解,然后获取该注解及其属性值。

public class MyClass {
    
    @MyAnnotation(value=42)
    public void myMethod() {
        // ...
    }
    
    public static void main(String[] args) throws NoSuchMethodException {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getMethod("myMethod");
        MyAnnotation[] annotations = method.getDeclaredAnnotationsByType(MyAnnotation.class);
        for (MyAnnotation annotation : annotations) {
            System.out.println(annotation.value()); // Output: 42
        }
    }
}

在上面的示例中,我们使用反射获取了 MyClass 类的 myMethod() 方法,并通过 getDeclaredAnnotationsByType() 方法获取了该方法上的 @MyAnnotation 注解及其属性值。最终输出了注解中的 value 属性。

总结

AnnotatedElement getDeclaredAnnotationsByType() 方法是Java中获取元素上指定类型注解的重要方法,通过它可以在运行时获取类、方法、字段等程序元素上的注解及其属性值。熟练掌握该方法的使用可以让我们更加灵活地获取注解信息。