在 Java 里你说的 “Parameter 参数”通常有两种常见场景,我分别说一下怎么调试,并给一些实用技巧。
这是最常见的情况,比如:
public void test(String name, int age) {
System.out.println(name);
}
IntelliJ IDEA / Eclipse
System.out.println("name=" + name + ", age=" + age);
log.debug("name={}, age={}", name, age);
如果是 Spring 项目:
@Around("execution(* com.xxx..*(..))")
public Object logParam(ProceedingJoinPoint pjp) throws Throwable {
Object[] args = pjp.getArgs();
log.info("方法参数: {}", Arrays.toString(args));
return pjp.proceed();
}
例如:
Method method = obj.getClass().getMethod("test", String.class, int.class);
Parameter[] params = method.getParameters();
arg0, arg1原因:编译时没保留参数名
✅ 解决:
javac -parameters xxx.java
Settings → Build → Compiler → Java Compiler
Additional command line parameters: -parameters
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
for (Parameter p : params) {
System.out.println(p.getName());
System.out.println(p.getType());
System.out.println(p.isNamePresent());
}
⚠️ isNamePresent() 为 false 说明参数名没保留
如果是 Web 接口参数:
@GetMapping("/user")
public User getUser(@RequestParam String id) {}
log.info("id={}", id);
logging:
level:
org.springframework.web: debug
✅ 优先用 IDE Debug
✅ 不确定参数值就 打印 / 日志
✅ 反射场景一定注意 -parameters
✅ 方法复杂时用 AOP 统一打印参数
如果你能具体说一下是:
我可以直接给你对应场景的调试示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。