如何通过 java 方法修改传入的值和 return
How to modify a passed in value and return it from a java method
我正在尝试修改 passin 对象 return 它:
private Sample modifyObj(Sample obj) {
obj.setValue1("value1");
obj.setValue2("value2");
return obj;
}
这给了我一个错误,说“方法修改了参数”。
我试图通过在方法中也有一个本地副本来做到这一点:
private Sample modifyObj(Sample obj) {
Sample obj2 = obj;
obj2.setValue1("value1");
obj2.setValue2("value2");
return obj2;
}
但是还是一样的错误。有没有更好的方法?
我试图重现你的错误,创建了一个示例 class:
public class Sample {
private String s1, s2;
public void setValue1(String s1) {
this.s1 = s1;
}
public void setValue2(String s2) {
this.s2 = s2;
}
}
并使用类似您的方法进行测试
public class proofSemantic {
private Sample modifyObj(Sample obj) {
obj.setValue1("value1");
obj.setValue2("value2");
return obj;
}
public void makeTest() {
Sample obj=new Sample();
modifyObj(obj);
}
public static void main(String[] args) {
proofSemantic proof=new proofSemantic();
proof.makeTest();
}
}
它没有产生任何错误。你可以再详细一点吗?顺便说一句,我不知道这个奇怪的错误。你用的是什么 Java 机器?什么IDE?
理想情况下,当您将 object
传递给 method
时,它的引用会被传递,并且在此基础上所做的所有修改都会自动应用于调用者中传递的 object
.所以我想没有必要 return 除非你想做一个克隆。
private void modifyObj(Sample obj) {
obj.setValue1("value1");
obj.setValue2("value2");
}
和来电者
Sample sample = new Sample();
modifyObj(sample);
//here when you access sample, you will get modified values anyways
我正在尝试修改 passin 对象 return 它:
private Sample modifyObj(Sample obj) {
obj.setValue1("value1");
obj.setValue2("value2");
return obj;
}
这给了我一个错误,说“方法修改了参数”。 我试图通过在方法中也有一个本地副本来做到这一点:
private Sample modifyObj(Sample obj) {
Sample obj2 = obj;
obj2.setValue1("value1");
obj2.setValue2("value2");
return obj2;
}
但是还是一样的错误。有没有更好的方法?
我试图重现你的错误,创建了一个示例 class:
public class Sample {
private String s1, s2;
public void setValue1(String s1) {
this.s1 = s1;
}
public void setValue2(String s2) {
this.s2 = s2;
}
}
并使用类似您的方法进行测试
public class proofSemantic {
private Sample modifyObj(Sample obj) {
obj.setValue1("value1");
obj.setValue2("value2");
return obj;
}
public void makeTest() {
Sample obj=new Sample();
modifyObj(obj);
}
public static void main(String[] args) {
proofSemantic proof=new proofSemantic();
proof.makeTest();
}
}
它没有产生任何错误。你可以再详细一点吗?顺便说一句,我不知道这个奇怪的错误。你用的是什么 Java 机器?什么IDE?
理想情况下,当您将 object
传递给 method
时,它的引用会被传递,并且在此基础上所做的所有修改都会自动应用于调用者中传递的 object
.所以我想没有必要 return 除非你想做一个克隆。
private void modifyObj(Sample obj) {
obj.setValue1("value1");
obj.setValue2("value2");
}
和来电者
Sample sample = new Sample();
modifyObj(sample);
//here when you access sample, you will get modified values anyways