在 Java 里,“Parameter(参数)能不能修改”要看你说的“修改”指的是什么,以及参数是基本类型还是引用类型。下面分情况说明:
Java 只有值传递(pass-by-value):
void test(int a) {
a = 10; // 修改的是局部变量 a
}
int x = 5;
test(x);
// x 仍然是 5
✅ 方法里的参数变量可以改
❌ 不会影响调用处的变量
void test(List<String> list) {
list.add("hello");
}
List<String> l = new ArrayList<>();
test(l);
// l 里有 "hello"
✅ 对象内容可被修改
void test(List<String> list) {
list = new ArrayList<>(); // 只改了局部变量
}
List<String> l = new ArrayList<>();
test(l);
// l 还是原来的对象
❌ 引用本身无法被“换掉”
Parameter 在反射中(java.lang.reflect.Parameter)如果你说的是 反射里的 Parameter 对象:
Method m = ...
Parameter p = m.getParameters()[0];
❌ 不能修改
Parameter 是只读的如果是注解里的参数:
@Parameter(name = "x")
❌ 注解参数在编译后固定,不能运行时修改
AtomicReference / Holder 类void test(AtomicReference<Integer> ref) {
ref.set(10);
}
Java 方法参数可以“改局部变量”,但不能改实参本身;
引用类型可以改对象内容,不能改引用指向;
反射Parameter和注解参数不能修改。
如果你说的是某种具体场景(反射、Spring、注解、MyBatis、JUnit 等),可以告诉我,我可以给更针对性的答案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。