📅  最后修改于: 2023-12-03 15:10:25.052000             🧑  作者: Mango
在Java中,可以使用反射机制获取方法的参数注解信息。其中,getParameterAnnotations() 方法可以用于获取指定方法的参数注解信息。
public Annotation[][] getParameterAnnotations()
无
返回一个二维数组,其中每个一维数组对应一个方法的参数,每个元素是该参数的所有注解。
下面是一个简单的示例代码,用于演示如何使用 getParameterAnnotations() 方法获取方法的参数注解信息。
import java.lang.annotation.*;
import java.lang.reflect.*;
public class Test {
public void testMethod(@MyAnnotation String name, @MyAnnotation int age) {
System.out.println(name + " " + age);
}
public static void main(String[] args) {
try {
Method method = Test.class.getMethod("testMethod", String.class, int.class);
Annotation[][] annotations = method.getParameterAnnotations();
for (int i = 0; i < annotations.length; i++) {
Annotation[] parameterAnnotations = annotations[i];
for (int j = 0; j < parameterAnnotations.length; j++) {
Annotation annotation = parameterAnnotations[j];
if (annotation instanceof MyAnnotation) {
MyAnnotation myAnnotation = (MyAnnotation) annotation;
System.out.println(myAnnotation.value());
}
}
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
@interface MyAnnotation {
String value() default "";
}
以上代码中,定义了一个 @MyAnnotation 注解,并使用该注解修饰了 testMethod() 方法的两个参数。在 main() 方法中,获取了 testMethod() 方法的参数注解信息,并输出了注解的值。运行该代码,输出结果如下:
name
age
使用 getParameterAnnotations() 方法可以获取方法的所有参数注解信息。在实际开发中,这一特性可以用于实现自定义注解,以及对注解的元数据进行解析处理。