2023-java-study / book-study

북 스터디 기록 레포지토리
0 stars 0 forks source link

[item 13] Cloneable아키텍처 #41

Closed NuhGnod closed 1 year ago

NuhGnod commented 1 year ago

p.84에서 Cloneable 아키텍처의 기초가 되는 필드 단위 객체 복사 가 어떤 내용을 말하는건지 이해가 잘 안갑니다

gmelon commented 1 year ago

아마도 Object 클래스의 clone() 동작 방식을 의미하는 것 같습니다. Object.clone() 은 아래 문서에 적혀있는 것 처럼 새로운 인스턴스를 만들고 기본/참조 필드의 값을 복제해서 새로운 인스턴스에 넣어줍니다 (shallow copy).

이 메서드는 이 객체의 클래스의 새 인스턴스를 생성하고, 이 객체의 각 필드의 내용을 정확히 해당 필드의 내용으로 초기화합니다. 마치 대입 연산으로 수행하는 것과 같습니다. 필드의 내용 자체는 복제되지 않습니다. 따라서 이 메서드는 "얕은 복사"를 수행하며, "깊은 복사" 작업은 수행하지 않습니다.

반면 고수준 API를 사용한 객체의 복사는 필드 단위로 값을 복사하는게 아닌, 직접 API의 호출을 통해 값을 현재 상태까지 계속해서 변경시키는 것이기 때문에 Cloneable 아키텍처와는 어울리지 않는다 라고 표현한 것 같습니다.