В Java все переменные передаются по значению. Для объектов, это означает, что мы передаем ссылку на объект. Я смущен со следующей ситуацией. Предположим, что у нас есть график объектов. Один объект содержит ссылку на другой объект, , этот объект имеет ссылку на еще один объект, например: user.address.city. Здесь у нас есть экземпляр класса User, , который имеет ссылку на экземпляр класса Address, у которого есть поле типа String - city. Теперь, скажем, у нас есть 2 пользователей:Объекты и ссылки в Java
User bob = new User();
User mary = new User();
Подозрение на объект «боб» имеет ссылку на адрес объекта:
Address bobAddress = new Address();
bobAddress.setCity("New York");
bob.setAddress(bobAddress);
Скажем Мэри и Боб начали жить вместе в одном доме, и у них есть такой же адрес, не проблема:
mary.setAddress(bobAddress);
Теперь мэри и боб не имеют ссылки на один адрес объекта. Но один день они развелись и мэри теперь имеет другой адрес:
mary.getAddress().setCity("Boston");
И здесь у нас есть проблема: Мэри изменила что-то в ее адрес, , но она также изменила адрес Боба, , потому что они одни и те же ссылки ,
Весь текст выше был моей попыткой описать в небольшом масштабе большую проблему для меня: Когда я должен создать копию (клон) какого-либо объекта, прежде чем установить ссылку на этот объект в другой экземпляр? Существуют ли какие-либо правила или методы? Я знаю об неизменяемых объектах (например, String, Integer ...) с этими объектами, нам вообще не нужно думать о таких проблемах, но что, если у меня есть изменяемые объекты. Как я должен себя вести с ними?
Вы прекрасно понимаете механику/язык. Но вы правы, что ваш * дизайн * создаст эту проблему и, следовательно, не сработает. Поэтому почему я исправил коррекцию дизайна. – djechlin