clone() 메서드를 재정의하지 않는 Cloneable 인터페이스를 구현하는 클래스를 보고합니다.
그러한 클래스는 public이 아니라 protected이며 클래스의 가변 상태를 복사하지 않는 clone()의 디폴트 구현을 사용합니다.
기본 clone() 메서드를 생성하는 빠른 수정을 사용할 수 있습니다. 이 메서드는 Cloneable 클래스에 필요한 제대로 기능하는 clone() 메서드의 기초로서 사용될 수 있습니다.
예:
public class Data implements Cloneable {
private String[] names;
}
빠른 수정을 적용한 후:
public class Data implements Cloneable {
private String[] names;
@Override
public Data clone() {
try {
Data clone = (Data) super.clone();
// TODO: 여기서 가변 상태를 복사하므로 clone이 원래 클래스의 내부를 변경하지 못합니다
return clone;
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
}
Cloneable 클래스를 상속받기 때문에 Cloneable인 클래스를 무시하려면 상속으로 인해 복제 가능한 클래스 무시 옵션을 사용하세요.
상위 클래스에서 clone() 메서드를 호출하기 때문에 Cloneable을 구현할 것을 요구하는 클래스를 무시하려면 상위 클래스의 clone() 메서드를 호출하는 데 Cloneable이 필요한 경우 무시 옵션을 사용하세요.