在 Java 中,Parameter(方法参数) 是通过 反射(Reflection) 获取的,主要用于在运行时获取方法的参数信息,比如参数名、类型、注解、修饰符等。
下面从基本用法 → 常见场景 → 注意事项逐步说明。
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 param : parameters) {
System.out.println(param);
}
}
}
输出示例:
java.lang.String name
int arg1
| 方法 | 说明 |
|---|---|
getName() |
参数名(需注意下面说明) |
getType() |
参数类型 |
getParameterizedType() |
泛型参数类型 |
getModifiers() |
修饰符 |
isVarArgs() |
是否为可变参数 |
getAnnotations() |
参数上的注解 |
getAnnotation(Class) |
指定注解 |
isNamePresent() |
参数名是否可用 |
Java 编译时默认会擦除参数名。
-parametersjavac -parameters Test.java
然后:
Parameter param = parameters[0];
System.out.println(param.getName()); // name
public void hello(@Param("name") String name) {}
Param paramAnno = param.getAnnotation(Param.class);
System.out.println(paramAnno.value());
Parameter param = parameters[1];
System.out.println(param.getType()); // int
System.out.println(param.getParameterizedType()); // int
泛型示例:
public void test(List<String> list) {}
System.out.println(param.getParameterizedType());
// java.util.List<java.lang.String>
public void login(@NotNull String username) {}
if (param.isAnnotationPresent(NotNull.class)) {
NotNull anno = param.getAnnotation(NotNull.class);
System.out.println("参数不能为空");
}
public void foo(String... args) {}
Parameter param = method.getParameters()[0];
System.out.println(param.isVarArgs()); // true
构造方法同样支持:
Constructor<?> constructor = Test.class.getConstructor(String.class);
Parameter[] params = constructor.getParameters();
✅ 框架开发(Spring、MyBatis)
✅ 参数校验
✅ 自动生成接口文档
✅ AOP 参数解析
✅ 通用工具方法
核心步骤:
Class → Method / ConstructorgetParameters()Parameter API记住一句话:
Java 反射获取参数名必须加
-parameters,否则用注解替代。
如果你有具体场景(比如 Spring、MyBatis、自定义注解、参数注入),可以直接说,我可以给你针对性示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。