Item 13 발표 내용
clone 재정의는 주의하여 진행하라
Last updated
Was this helpful?
clone 재정의는 주의하여 진행하라
Last updated
Was this helpful?
참고 자료
객체 복사 라는 키워드에 대해서 정확하게 알지 못함
Prototype Design Pattern
객체 복사 구현 방법
Shallow Copy(얕은 복사)
Immutable Object
Mutable Object
Deep Copy(깊은 복사)
External Library(외부 라이브러리)
Apache Commons Lang
Gson
Jackson
clone() 메서드 대체 방법
Conversion Constructor
Conversion Factory Method
Immutable Object의 경우
Mutable Object의 경우
Cloneable 인터페이스 구현 후, clone() 메서드 재정의
public 접근 제한자 수정
해당 클래스로 반환 타입 수정
검사 예외로 제공되는 것을 비검사 예외로 수정
상위 객체 super.clone()
하위 객체를 상위 객체에 설정
Immutable Object의 경우
Shallow Copy의 Immutable Object와 동일
Mutable Object의 경우
Cloneable 인터페이스 구현 후, clone() 메서드 재정의
public 접근 제한자 수정
해당 클래스로 반환 타입 수정
검사 예외로 제공되는 것을 비검사 예외로 수정
상위 객체 super.clone()
하위 객체 clone()후 상위 객체에 수정
External Library
Apache Commons Lang
도메인 클래스에 Serializable 인터페이스를 구현이 필수
Gson
도메인 클래스에 Serializable 인터페이스를 구현할 필요가 없음
Jackson
복제하기 위한 도메인 클래스는 기본 생성자가 필수로 필요
라이브러리가 도메인 클래스의 필드에 접근할 수 있도록 ObjectMapper 설정 필요
Conversion Constructor
Conversion Factory Method