2012-05-24 2 views
2

저는 직원의 기록을 끌어와 이상하게도 "EmployeeRecordDataHolder"라고 불리는 집에서 만든 데이터 홀더 객체에 저장하는 Java webapp를 가지고 있습니다.구성원 데이터로 참조를 공유하는 객체 복사하기

업데이트 프로세스가 시작될 때 EmployeeRecordDataHolder 사본을 만들어 데이터 변경 방법에 대한 비교 보고서를 만들 수 있습니다.

회원 데이터에 대한 원본 및 사본 공유 참조에 문제가 발생하여 원래 데이터가 업데이트되지 않은 상태로 유지됩니다.

원래 HashMap을 통해 데이터베이스에서 데이터를 다시 가져옵니다. 두 객체를 모두 채우는 경우 HashMap get()에서 원본과 복사본이 두 객체가 여전히 데이터에 대한 동일한 참조를 공유하므로 한 객체의 데이터를 변경하면 복사본에서도 변경됩니다.

HashMap을 사용하여 원본 개체를 채운 다음 복사본의 모든 설정자에서 원본 이미지의 getter를 모두 호출하여 복사본을 만들면 어떻게됩니까? 예 :

copyDataHolderObj.setSomePieceOfData( originalDataHolderObj.getSomePieceOfData()); 

이 방법을 사용하면 서로 독립적으로 변경할 수있는 두 개의 개체가 생성됩니까? 첫 번째 질문에 대한

스티브

답변

1

대답 사전에 많은

감사 : 같은 객체에

예, 모두가 공유 할 것입니다 참조. HashMap은 참조를 저장하므로 모든 업데이트가 원본 객체에서 수행됩니다. This 페이지에서 변경 사항이 반영되었음을 명확하게 설명합니다.

두 번째 질문에 대한 답변 :

이렇게 할 수 있습니다. 모든 객체의 복사본 만들기.

+0

다음과 같이하십시오. copyDataHolderObj.setSomePieceOfData (originalDataHolderObj.getSomePieceOfData()); 모든 데이터 값에 다른 하나의 값을 영향을주지 않으면 서 서로 독립적으로 업데이트 할 수있는 두 개의 객체가 제공됩니까? – Steve

+0

예. 당신이 ClassName copyDataHolderObj = new ClassName();의 앞에 새로운 객체를 생성한다고 가정하면 ClassName은 필수 클래스입니다. – mtk

관련 문제