繁体   English   中英

在Java中将对象作为参数传递

[英]Passing an object as a parameter in Java

有一个场景

假设我有一个类People和一个实用类PeopleUtil其中有一个方法computeTotalNumberOfPeople

在一个单独的课程中说EvaluatePeople我有代码

People people = new People();
people.setValue(10);
people.setX(45);
PeopleUtil.computeTotalNumberOfPeople(people);
this.persistPeople(people);

computeTotalNumberOfPeople方法中

public void computeTotalNumberOfPeople(People people){
  //logic for computing total no of people & then
  int totalPeople = certainIntValue; 
  // I can return the totalPeople value from this method but I am not doing it just for the sake of this scenario
  people.setTotalNumberOfPeople(totalPeople);
}

当我查看 db 行中的 People 对象时,我看到totalNumberOfPeople值仍然存在。 这实际上很好。

我的问题是,我对此有点困惑, computeTotalNumberOfPeople方法不应该将具有额外设置值的 people 对象返回给方法调用者代码,然后将该对象作为参数传递给 peristPeople 方法吗?

我希望你明白我的意思,这似乎有点不对

对象是可变的——它们可以改变。

所以,当你调用people.setTotalNumberOfPeople(totalPeople)您正在设置totalNumberOfPeople变量(或任何它被称为内部People类) totalPeoplepeople反对。

当您退出computeTotalNumberOfPeople方法时,该对象仍然是修改过的对象——方法中的更改仍然存在。

考虑它的一种方法是将引用传递给people 当您调用computeTotalNumberOfPeople(people) ,您传递的是对people引用 people被修改时,您会修改内存中的相同位置,因此更改会持续存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM