📜  Java中的类 getDeclaredAnnotationsByType() 方法和示例(1)

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

Java中的类 getDeclaredAnnotationsByType() 方法和示例

Java中的类 getDeclaredAnnotationsByType() 方法是用于返回某个类或者方法上指定类型的注解数组。该方法可以通过反射机制实现,对于需要获取一个类或方法上的注解信息时,可以使用该方法进行查询。

语法
public <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotationClass)
参数
  • annotationClass:要查询的注解类型。
返回值
  • 如果指定类型的注解存在,则该方法返回指定类型的注解数组;否则返回长度为0的数组。
示例
import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@interface MyAnnotation {
    String value();
}

@MyAnnotation("Hello")
public class MyClass {

    @MyAnnotation("World")
    public void myMethod() {
        // ...
    }

    public static void main(String[] args) {
        // 使用反射获取类上的注解
        MyAnnotation[] classAnnotation = MyClass.class.getDeclaredAnnotationsByType(MyAnnotation.class);
        System.out.println("类上的注解信息:");
        for (MyAnnotation annotation : classAnnotation) {
            System.out.println(annotation.value());
        }

        // 使用反射获取方法上的注解
        MyAnnotation[] methodAnnotation = null;
        try {
            methodAnnotation = MyClass.class.getDeclaredMethod("myMethod").getDeclaredAnnotationsByType(MyAnnotation.class);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        System.out.println("方法上的注解信息:");
        for (MyAnnotation annotation : methodAnnotation) {
            System.out.println(annotation.value());
        }
    }
}

使用反射机制获取类和方法上的注解信息。

输出结果:

类上的注解信息:
Hello
方法上的注解信息:
World

以上程序演示了如何使用Java中的类 getDeclaredAnnotationsByType() 方法来获取类和方法上指定类型的注解信息。在该示例中,定义了一个 MyAnnotation 注解,分别为类和方法添加了注解,并使用 getDeclaredAnnotationsByType() 方法获取注解信息。