📅  最后修改于: 2023-12-03 15:06:57.804000             🧑  作者: Mango
在Java中,使用注解可以为代码添加额外的信息,这些信息可以在运行时被获取。getDeclaredAnnotationsByType(Class<T> annotationClass)
方法是Java8 新增的方法,用于获取指定类或方法上的注解信息。本文将介绍如何在Java中使用getDeclaredAnnotationsByType()
方法。
假设我们需要获取方法test()
上的MyAnnotation
注解信息,其中MyAnnotation
是一个自定义注解,代码如下:
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value();
}
public class MyClass {
@MyAnnotation("Hello World")
public void test() {
System.out.println("Hello World");
}
public static void main(String[] args) throws NoSuchMethodException {
MyClass myClass = new MyClass();
Method method = myClass.getClass().getMethod("test");
MyAnnotation[] annotations = method.getDeclaredAnnotationsByType(MyAnnotation.class);
System.out.println(Arrays.toString(annotations));
}
}
在main方法中,我们通过反射获取了MyClass
类中的test()
方法,并使用getDeclaredAnnotationsByType(MyAnnotation.class)
方法获取了这个方法上的MyAnnotation
注解信息。最终,我们会得到一个包含一个元素的MyAnnotation
数组。
输出结果如下:
[@MyAnnotation(value=Hello World)]
使用getDeclaredAnnotationsByType(Class<T> annotationClass)
方法可以方便地获取到指定类或方法上的注解信息。在使用时需要注意,需要在自定义注解中添加@Retention(RetentionPolicy.RUNTIME)
,否则注解信息在运行时无法获取。