📜  方法类 | Java中的 getParameterAnnotations() 方法(1)

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

Java中的 getParameterAnnotations() 方法

在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() 方法可以获取方法的所有参数注解信息。在实际开发中,这一特性可以用于实现自定义注解,以及对注解的元数据进行解析处理。