Существует сценарийПередача объекта в качестве параметра в 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);
}
Когда я смотрю объект People в строке db, я вижу, что значение totalNumberOfPeople
сохраняется. Это на самом деле прекрасно.
Мой вопрос в том, что я немного смущен, не должен computeTotalNumberOfPeople
метод возвращает объект people, который имеет дополнительное заданное значение, к коду вызывающего метода &, тогда этот объект должен быть передан peristPeople методу as Аргумент?
Я надеюсь, вы понимаете, что я имею в виду, это не кажется правильным некоторым образом
Вы передаете только объектные ссылки на вызовы метода. Таким образом, вы работаете на одном и том же объекте в каждом методе. Поэтому возврат обратно не нужен. – Codebender
Вы * можете * изменить метод, чтобы вернуть объект 'people', который он дал, что может действительно субъективно сделать код более понятным в этом случае (в зависимости от личного мнения). Это не технически необходимо, потому что объект передается по ссылке, поэтому любые изменения, внесенные в объект, на который ссылается эта переменная, будут отражаться в любой другой переменной, которая ссылается на тот же экземпляр объекта. – David
Как общий комментарий, я считаю, что сеттеры плохо работают. Вы хотите, чтобы ваши классы были как можно более неизменными, в противном случае отслеживание состояния может быть сложным. – Dici