Object Copy

복사가 사용되는 이유는 무엇인가요?

원본 객체를 안전하게 보호 하기 위함

객체 복사는 어떻게 할 수 있나요?

깊은 복사와 얕은 복사의 차이를 말해주세요.

Cloneable

marker interface 로서 아무런 메서드가 선언되있지 않다. 다만 Cloneable 인터페이스를 사용함으로써

이것은 Clone 메서드에 의해 복사될수있다. 라는 표시를 해놓는것이다.

얕은 복사

= 연사자를 사용하면 된다. 또는 재정의 없이 Clone 메서드를 사용하면 된다.

단순히 clone 메서드를 호출하면 얕은 복사가 이루어진다. 단순 객체 값, 필드값을 복사할 뿐, 객체가 참조하고있는 객체 까지 복사하지는 않는다.

필드가 원시타입이면 필드값을 복사하고, 참조타입이면 주소를 복사한다.

그렇기에 만약 원본 객체가 변경되면 복사한 대상의 값도 변경된다.

깊은 복사

Cloneable 를 구현한 뒤 Clone 메서드를 재정의 해서 사용해야 한다.

clone() 메서드를 사용하며 얕은 복사와는 달리 해당 원본을 그대로 복사한 뒤 아예 새로운 객체를 만들어서 메모리에 할당된다. 고로 원본객체에 변화에 영향을 받지않는 독립적인 복사객체가 된다.

** Cloneable 인터페이스 게시글 작성,,

Last updated