-
Clone() 알아보기TIL 2021. 2. 28. 12:54
내가 clone()을 사용해본 적은 list를 복사할 때만 해본 적이 있다.
기본적으로 얕은 복사가 이루어 진다.
근데 원시타입은 얕은 복사가 이뤄져도 상관이 없지만 객체일 경우에는 문제가 생긴다.
예시를 보자.
clone해서 만든 Ar2에 객체를 추가해도 Ar에는 영향이 없지만,
얕은 복사이기 때문에 sample을 건드리면 원본 데이터에도 영향이 간다.
그래서 copy를 사용하는 게 좋다.
근데 list나 배열일 경우는 copy를 하면 되지만 객체일 경우는 clone()을 재정의 해서 사용하는 것도 좋다.
내부적으로 재정의해서 사용하면 원복에 영향도 없고 다른 객체가 복사본이 하나 생기는 거다.
위와 같이 하나하나 카피해서 넣어도 되고 Info에서 또 clone()을 오버라이딩하면 조금 이쁘게 된다.
info도 clone을 오버라이딩 하니까 sample class에서는 그냥 또 clone을 호출해 주면 완벽하게 deppcopy가 진행이 된다.
'TIL' 카테고리의 다른 글
2021.03.01 기록장 (0) 2021.02.28 오버로딩 , 오버라이딩 (0) 2021.02.28 2021.02.28 기록장 (0) 2021.02.28 2021.02.27 기록장 (0) 2021.02.26 2021.02.26 기록장 (0) 2021.02.25