📅  最后修改于: 2023-12-03 15:16:20.055000             🧑  作者: Mango
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中获取元素上指定类型注解的重要方法,通过它可以在运行时获取类、方法、字段等程序元素上的注解及其属性值。熟练掌握该方法的使用可以让我们更加灵活地获取注解信息。