Item 13 발표 내용

clone 재정의는 주의하여 진행하라

객체 복사

clone 재정의는 주의하여 진행하라

객체 복사

  • 객체 복사 라는 키워드에 대해서 정확하게 알지 못함

객체 복사에 대한 키워드 찾아보기

  • Prototype Design Pattern

  • 객체 복사 구현 방법

    • Shallow Copy(얕은 복사)

      • Immutable Object

      • Mutable Object

    • Deep Copy(깊은 복사)

      • External Library(외부 라이브러리)

        • Apache Commons Lang

        • Gson

        • Jackson

  • clone() 메서드 대체 방법

    • Conversion Constructor

    • Conversion Factory Method

Shallow Copy

  • Immutable Object의 경우

  • Mutable Object의 경우

    • Cloneable 인터페이스 구현 후, clone() 메서드 재정의

    • public 접근 제한자 수정

    • 해당 클래스로 반환 타입 수정

    • 검사 예외로 제공되는 것을 비검사 예외로 수정

    • 상위 객체 super.clone()

    • 하위 객체를 상위 객체에 설정

Deep Copy

  • Immutable Object의 경우

    • Shallow Copy의 Immutable Object와 동일

  • Mutable Object의 경우

    • Cloneable 인터페이스 구현 후, clone() 메서드 재정의

    • public 접근 제한자 수정

    • 해당 클래스로 반환 타입 수정

    • 검사 예외로 제공되는 것을 비검사 예외로 수정

    • 상위 객체 super.clone()

    • 하위 객체 clone()후 상위 객체에 수정

External Library

  • Jackson

    • 복제하기 위한 도메인 클래스는 기본 생성자가 필수로 필요

    • 라이브러리가 도메인 클래스의 필드에 접근할 수 있도록 ObjectMapper 설정 필요

객체 복사 대체 방법

객체 복사를 사용하는 Java API

정리

Last updated