Item 13 발표 내용

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

객체 복사

Intro

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

Table of Contents

객체 복사

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

Situation

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

  • Prototype Design Pattern

  • 객체 복사 구현 방법

    • Shallow Copy(얕은 복사)

      • Immutable Object

      • Mutable Object

    • Deep Copy(깊은 복사)

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

        • Apache Commons Lang

        • Gson

        • Jackson

  • clone() 메서드 대체 방법

    • Conversion Constructor

    • Conversion Factory Method

Brain Storming

Shallow Copy

  • Immutable Object의 경우

  • Mutable Object의 경우

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

    • public 접근 제한자 수정

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

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

    • 상위 객체 super.clone()

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

Shallow Copy

Deep Copy

  • Immutable Object의 경우

    • Shallow Copy의 Immutable Object와 동일

  • Mutable Object의 경우

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

    • public 접근 제한자 수정

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

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

    • 상위 객체 super.clone()

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

Deep Copy

External Library

Apache Commons 라이브러리를 통한 객체 복사
Gson 라이브러리를 통한 객체 복사
  • Jackson

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

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

Jackson 라이브러리를 통한 객체 복사

객체 복사 대체 방법

복사 생성자를 통한 객체 복사
복사 메서드를 통한 객체 복사

객체 복사를 사용하는 Java API

Collection의 Set 클래스

정리

Collection의 Set 클래스

Last updated

Was this helpful?