如何修改传入的值并从java方法返回它

问题描述

我正在尝试修改传入的对象并返回它:

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;
    }

但还是同样的错误。有没有更好的办法?

解决方法

我试图重现您的错误,创建一个 Sample 类:

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。所以我想除非你想克隆它,否则没有必要返回它。

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...