2015-09-18 4 views
-1

Итак, когда метод принимает объект, я знаю, что ссылка объекта передается, а не сам объект.Назначение переменных объекта в вызове метода

Итак, когда я присваиваю значение объекту внутри метода, когда вызов метода заканчивается, исходный объект не изменяется.

Есть ли способ изменить фактический объект в вызове метода?

+0

Вы не можете повторно назначить этот объект, но вы можете изменить состояние, вызвав сеттеры или другие методы. –

+3

Похоже, у вас может быть недоразумение, но ваш вопрос не очень ясен. Это может помочь, если вы представите некоторый код для иллюстрации. –

+0

Если вы имеете в виду изменение свойств объекта, то да. Вы не можете назначить значение Объекту; вы можете изменить переменную, содержащую ссылку на объект, чтобы указать на другой объект (или нигде), или использовать переменную для доступа к объекту, который он ссылается. – Kenney

ответ

0

Итак, когда метод принимает объект, я знаю, что ссылка объекта передается, а не сам объект.

Это неверное описание. Все передается по значению в 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.

Смежные вопросы