5

说我有代码

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

4 回答 4

5

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

于 2013-08-27T12:49:37.867 回答
3

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

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

SomeObject someObject = new SomeObject();

编辑: Java 是“按引用传递”还是“按值传递”?

于 2013-08-27T12:52:26.860 回答
3

您正在传递 的引用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

于 2013-08-27T12:49:58.910 回答
1

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

于 2013-08-27T12:52:10.427 回答