배열을 제외하고는 Cloneable 사용을 지양하는 것이 좋으며 복제 기능은 생성자와 팩터리를 이용하는 것이 좋다.

Cloneable

복제해도 되는 클래스임을 명시하는 용도의 믹스인 인터페이스 (지만 의도한 목적 이루지 못함)

믹스인 : 다른 클래스에서 사용할 목적으로 만들어진 클래스, 포함 관계

//Cloneable interface
public interface Cloneable {
}

//Object의 clone 메서드
@IntrinsicCandidate
protected native Object clone() throws CloneNotSupportedException;

Cloneable 인터페이스 역할

clone 메서드의 일반 규약

객체의 복사본을 생성해 반환한다.

제대로 동작하지 않는 Clone 메서드

Clone의 메커니즘은 생성자 연쇄와 비슷하다.