Если метод возвращает объект из определенного индекса массива, а затем этот объект изменяется, будет ли этот объект изменен только локально или будет изменен объект в массиве?Mutability массивов в java
Есть ли способ заставить каждый случай?
Если метод возвращает объект из определенного индекса массива, а затем этот объект изменяется, будет ли этот объект изменен только локально или будет изменен объект в массиве?Mutability массивов в java
Есть ли способ заставить каждый случай?
Объект в массиве также будет изменен. Он работает таким образом, потому что, хотя Java проходит по значению, он передает значение объекта с ссылкой. Таким образом, в конце массив имеет копию ссылки, и все, что получает результат, имеет копию ссылки. Когда вы изменяете сам объект, вы изменяете то, что они оба «указывают» на. Таким образом, оба видят изменение.
Единственный способ сделать это неправдой - сделать копию элемента перед его возвратом.
В качестве альтернативы, если вы сделаете свой объект неизменным, вам не придется беспокоиться об этих деталях, потому что вы не можете не изменить.
Вам нужно сделать defensive copy объекта, если вы хотите, чтобы он не может быть изменен
Просто попробуйте, сделав простую программу. – Braj
1) объект * is * сам, и; 2) объект * не * клонируется/дублируется во время назначения или используется в качестве аргумента метода. (Этих двух частей информации должно быть достаточно, чтобы ответить на вопрос, даже не отвлекаясь на контрольные значения.) – user2864740