如果我正在修改它,是否需要从方法返回一个对象?

时间:2013-08-27 12:47:48

标签: java

说我有代码

if(some statement){
   object1.setSomeField("abc");
}

我可以这样做吗?

    public void methodToSetField(SomeObject object1){
       //provide some logic for setting
       object1.setSomeField("abc")
    }

   if(some statement){
      this.methodToSetField(object1);
   }

现在我的问题是, 如果我想替换第一段代码,使用该方法我需要返回object1还是足以设置它。

4 个答案:

答案 0 :(得分:2)

不,你不必,因为你正在处理相同的内存对象。所以调用代码,如果在调用方法后使用值,它应该看到更新。

答案 1 :(得分:1)

您正在传递object1的引用,因此无需返回它。它会发生变化。

请参阅以下代码:

  public void methodToSetField(SomeObject object1){
       //provide some logic for setting
       object1.setSomeField("abc")
    }

这个

 public object1Type  methodToSetField(SomeObject object1){
           //provide some logic for setting
           object1.setSomeField("abc");
           return object1;
        }

在这两种情况下,执行代码object1更新后。

所以僵尸线是,不需要return

答案 2 :(得分:1)

这样做很好。在java中,当你传入一个对象时,你实际上并没有传入“对象”,而是传递给对象的引用(或指针)。

只要您不执行以下操作,您所做的任何修改都将直接改变您传入的对象:

SomeObject someObject = new SomeObject();

编辑: Is Java "pass-by-reference" or "pass-by-value"?

答案 3 :(得分:0)

它将起作用,因为在传递处理同一对象时引用的对象的地址位置的副本。