Java에서 모든 변수는 값으로 전달됩니다. 객체의 경우 이것은 객체에 대한 참조를 전달한다는 것을 의미합니다. 다음 상황과 혼동 스럽습니다. 우리는 객체 그래프를 가지고 있다고 가정 해 봅시다. 하나의 객체는 다른 객체에 대한 필드 참조로 객체가 user.address.city와 같은 하나 이상의 객체에 대한 참조를 포함합니다. 여기서 우리는 클래스 User의 인스턴스 인 을 가지며, 인스턴스는 String - city 유형의 필드를 가진 클래스 Address의 인스턴스를 참조합니다. 이제 우리는이 사용자가 있다고 가정 해 봅시다 :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 ...)에 대해서는 이러한 문제에 대해 전혀 생각할 필요가없는 이러한 개체를 알고 있지만 변경 가능한 개체가 있으면 어떻게 될까요? 어떻게해야합니까?
당신은 기계공/언어를 완벽하게 이해합니다. 그러나 당신의 디자인이이 문제를 일으킬 것이므로 작동하지 않는다는 것이 옳습니다. 그래서 왜 내가 디자인 수정을 upvoted. – djechlin