温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何遍历java Parameter参数

发布时间:2026-09-13 15:16:00 来源:亿速云 阅读:87 作者:小樊 栏目:编程语言

在 Java 中,“Parameter 参数”通常出现在 反射(Reflection) 场景里,最常见的是 java.lang.reflect.Parameter(方法或构造函数的参数)。下面系统地讲一下如何遍历 Parameter


一、遍历方法的 Parameter(最常见)

1️⃣ 获取 Method

Method method = SomeClass.class.getDeclaredMethod("methodName", String.class, int.class);

2️⃣ 获取 Parameter 数组

Parameter[] parameters = method.getParameters();

3️⃣ 遍历 Parameter

for (Parameter parameter : parameters) {
    System.out.println("参数名: " + parameter.getName());
    System.out.println("参数类型: " + parameter.getType());
    System.out.println("泛型类型: " + parameter.getParameterizedType());
}

⚠️ 注意

  • 参数名默认是 arg0, arg1除非编译时加了 -parameters 参数
javac -parameters xxx.java

二、遍历构造函数的 Parameter

Constructor<?> constructor = SomeClass.class.getDeclaredConstructor(String.class);
Parameter[] parameters = constructor.getParameters();

for (Parameter parameter : parameters) {
    System.out.println(parameter);
}

三、获取注解(非常常用)

for (Parameter parameter : method.getParameters()) {
    if (parameter.isAnnotationPresent(MyAnnotation.class)) {
        MyAnnotation annotation = parameter.getAnnotation(MyAnnotation.class);
        System.out.println(annotation.value());
    }
}

四、判断参数特征

parameter.isVarArgs();        // 是否为可变参数
parameter.isNamePresent();    // 参数名是否可用
parameter.getModifiers();     // 修饰符

五、结合泛型遍历(复杂类型)

Type type = parameter.getParameterizedType();
if (type instanceof ParameterizedType) {
    ParameterizedType pType = (ParameterizedType) type;
    Type[] actualTypes = pType.getActualTypeArguments();
}

六、在 Spring / MyBatis 等框架中的 Parameter

Spring(MethodParameter)

MethodParameter methodParameter = new MethodParameter(method, index);
methodParameter.getParameterType();
methodParameter.getParameterName();

MyBatis(通过 Mapper 方法)

MyBatis 内部使用 ParamMap@Param,不直接暴露 Parameter


七、完整示例

public class Demo {
    public void test(String name, @MyAnno int age) {}

    public static void main(String[] args) throws Exception {
        Method m = Demo.class.getMethod("test", String.class, int.class);
        for (Parameter p : m.getParameters()) {
            System.out.println(p.getName() + " : " + p.getType());
        }
    }
}

如果你指的是 lambda 参数 / 注解参数 / Spring 参数解析 / 字节码层面的 Parameter,可以告诉我具体场景,我可以给你更精准的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI