温馨提示×

温馨提示×

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

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

java Parameter参数如何获取

发布时间:2026-10-04 08:00:31 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

在 Java 里,“Parameter(参数)”这个词可能出现在不同场景,下面按常见情况给你说明如何获取。


一、获取方法的参数(反射:Method / Constructor)

1️⃣ 获取方法参数信息(名称、类型)

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

public class Test {
    public void hello(String name, int age) {}

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

        for (Parameter p : parameters) {
            System.out.println("参数名: " + p.getName());
            System.out.println("参数类型: " + p.getType());
            System.out.println("是否是可变参数: " + p.isVarArgs());
        }
    }
}

⚠️ 注意

  • 默认情况下 p.getName() 可能是 arg0, arg1
  • 需要编译时加参数:
javac -parameters Test.java

或使用 Maven:

<compilerArgs>
    <arg>-parameters</arg>
</compilerArgs>

二、获取注解中的参数(Annotation)

@MyAnnotation(value = "test")
public class Demo {}
MyAnnotation anno = Demo.class.getAnnotation(MyAnnotation.class);
String value = anno.value(); // 获取参数

三、获取方法调用时传入的实际参数(AOP / 拦截)

Spring AOP 示例

@Around("execution(* com.xxx.*.*(..))")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
    Object[] args = pjp.getArgs(); // 获取参数值
    for (Object arg : args) {
        System.out.println(arg);
    }
    return pjp.proceed();
}

四、获取 HttpServletRequest 中的参数(Web)

String name = request.getParameter("name");
String[] values = request.getParameterValues("hobby");

五、获取命令行参数(main 方法)

public static void main(String[] args) {
    for (String arg : args) {
        System.out.println(arg);
    }
}

六、获取 Lambda / 方法引用参数(有限)

  • 无法在运行时直接获取 Lambda 参数名
  • 只能通过:
    • 反射
    • 字节码增强(ASM / ByteBuddy)
    • 注解显式声明

总结

场景 获取方式
方法定义参数 Method.getParameters()
方法实际参数 AOP / 反射调用
注解参数 annotation.xxx()
Web 参数 request.getParameter()
命令行参数 main(String[] args)

如果你指的是 某一个具体场景(比如 MyBatis、Spring、反射工具类、IDEA 插件等),可以告诉我,我可以给你更精准的示例。

向AI问一下细节

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

AI
助
手