在 Java 中,“获取 Parameter 参数”通常有以下几种常见场景,我按使用场景给你分别说明,你可以对号入座。
java.lang.reflect.Parameter)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());
}
}
}
默认编译后参数名会变成 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
@GetMapping("/user")
public String getUser(@RequestParam String name,
@PathVariable int id) {
return name + id;
}
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());
}
}
Java 反射无法获取 Lambda 参数名,一般只能通过:
❌ 不加 -parameters → 参数名丢失
❌ 用 getDeclaredMethods() 但方法不可见
❌ 泛型参数用 getType() 拿不到 List<String>
✅ 泛型用:
parameter.getParameterizedType();
如果你能告诉我:
我可以直接给你最合适的一段代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。