Java에서 clone () 구현에 대한 빠른 Google을 수행 한 결과 http://www.javapractices.com/topic/TopicAction.do?Id=71
다음과 같은 주석이 있습니다.
복사 생성자와 정적 팩토리 메소드는 복제에 대한 대안을 제공하며 구현하기가 훨씬 쉽습니다.
내가 원하는 것은 깊은 사본을 만드는 것뿐입니다. clone ()을 구현하는 것은 많은 의미가있는 것 같지만, 구글 순위가 높은이 기사는 저를 조금 두렵게 만듭니다.
내가 발견 한 문제는 다음과 같습니다.
복사 생성자는 Generics에서 작동하지 않습니다.
다음은 컴파일되지 않는 의사 코드입니다.
public class MyClass<T>{
..
public void copyData(T data){
T copy=new T(data);//This isn't going to work.
}
..
}
샘플 1 : 제네릭 클래스에서 복사 생성자 사용.
팩토리 메서드에는 표준 이름이 없습니다.
재사용 가능한 코드를위한 인터페이스를 갖는 것은 매우 좋습니다.
public class MyClass<T>{
..
public void copyData(T data){
T copy=data.clone();//Throws an exception if the input was not cloneable
}
..
}
샘플 2 : 제네릭 클래스에서 clone () 사용.
복제가 정적 메서드가 아니라는 것을 알았지 만 보호 된 모든 필드의 전체 복사본을 만들 필요는 없습니까? clone ()을 구현할 때 복제 불가능한 하위 클래스에서 예외를 던지는 추가 노력은 나에게 사소한 것 같습니다.
내가 뭔가를 놓치고 있습니까? 모든 통찰력을 주시면 감사하겠습니다.