温馨提示×

温馨提示×

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

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

如何获取java Parameter参数

发布时间:2026-09-13 13:45:57 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

在 Java 中,“获取 Parameter 参数”通常有以下几种常见场景,我按使用场景给你分别说明,你可以对号入座。


一、获取方法 / 构造函数的参数(反射 java.lang.reflect.Parameter

1️⃣ 基本用法

import java.lang.reflect.Method;
import java.lang.reflect.Parameter;

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

    public static void main(String[] args) throws Exception {
        Method method = Demo.class.getMethod("test", String.class, int.class);
        Parameter[] parameters = method.getParameters();

        for (Parameter parameter : parameters) {
            System.out.println("参数名: " + parameter.getName());
            System.out.println("参数类型: " + parameter.getType());
            System.out.println("是否 final: " + parameter.isFinal());
        }
    }
}

2️⃣ 获取“真实参数名”(重要)

默认编译后参数名会变成 arg0, arg1,要保留参数名需:

编译时加参数

javac -parameters Demo.java

Maven 配置

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <compilerArgs>
      <arg>-parameters</arg>
    </compilerArgs>
  </configuration>
</plugin>

否则:

parameter.getName(); // 可能是 arg0

二、Spring 中获取方法参数(如 Controller)

1️⃣ 在 Controller 方法中直接获取

@GetMapping("/user")
public String getUser(@RequestParam String name,
                      @PathVariable int id) {
    return name + id;
}

2️⃣ 使用 MethodParameter(Spring)

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

三、获取注解参数(如自定义注解)

for (Parameter parameter : parameters) {
    if (parameter.isAnnotationPresent(MyAnno.class)) {
        MyAnno anno = parameter.getAnnotation(MyAnno.class);
        System.out.println(anno.value());
    }
}

四、Lambda / 方法引用中的参数

Java 反射无法获取 Lambda 参数名,一般只能通过:

  • 字节码工具(ASM / ByteBuddy)
  • 框架解析(Spring、MyBatis)

五、常见坑总结

❌ 不加 -parameters → 参数名丢失
❌ 用 getDeclaredMethods() 但方法不可见
❌ 泛型参数用 getType() 拿不到 List<String>

✅ 泛型用:

parameter.getParameterizedType();

如果你能告诉我:

  • 普通 Java / Spring / MyBatis / 反射工具
  • 想获取 参数名 / 类型 / 注解 / 值

我可以直接给你最合适的一段代码

向AI问一下细节

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

AI