如何通过 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