[英]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
类) totalPeople
的people
反对。
当您退出computeTotalNumberOfPeople
方法时,该对象仍然是修改过的对象——方法中的更改仍然存在。
考虑它的一种方法是将引用传递给people
。 当您调用computeTotalNumberOfPeople(people)
,您传递的是对people
的引用。 当people
被修改时,您会修改内存中的相同位置,因此更改会持续存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.