Итак, когда метод принимает объект, я знаю, что ссылка объекта передается, а не сам объект.
Это неверное описание. Все передается по значению в Java. Однако, когда объект передается, значения содержат ссылку на фактический объект.
Поэтому, когда я назначаю значение объекту внутри метода, когда вызов метода заканчивается, исходный объект не изменяется.
Это неправильное изображение. Значение в исходном объекте изменится, когда вы передадите объект методу и измените его значение внутри метода.
class Student{
int age; //To keep it simple, data is not private
public Students(int age){
this.age=age;
}
public static void main(String[] args)
{
Student s = new Student(17);
addAge(s);
System.out.println(s.age);
}
public static void addAge(Students s){
s.age += 5;
}
}
ВЫВОД:
22 //Age of original object does change
Есть ли способ изменить фактический объект в вызове метода?
Он изменит фактический объект в вызове метода. В случае, если вам интересно, как мы не изменим исходный объект, тогда нам придется пройти в оригинале copy
.
Вы не можете повторно назначить этот объект, но вы можете изменить состояние, вызвав сеттеры или другие методы. –
Похоже, у вас может быть недоразумение, но ваш вопрос не очень ясен. Это может помочь, если вы представите некоторый код для иллюстрации. –
Если вы имеете в виду изменение свойств объекта, то да. Вы не можете назначить значение Объекту; вы можете изменить переменную, содержащую ссылку на объект, чтобы указать на другой объект (или нигде), или использовать переменную для доступа к объекту, который он ссылается. – Kenney