2012-07-14 4 views

답변

4

Cloneable이 아닌 경우 clone() 메서드가 CloneNotSupportedException을 throw하기 때문입니다.

documentation for clone() 메서드를 살펴보아야합니다. 다음

clone() 방법은 클래스 Object에 선언하는 방법입니다

protected Object clone() throws CloneNotSupportedException 

참고 :

또한,이 Clone가 깨진 것을 알게 됐어요. 그래서 여기에 This answer을 사용하는 이유와 방법을 설명합니다.

1

Cloneable 마커 인터페이스는 실수였습니다.

즉, clone()의 기본 구현을 Object에서 "활성화"하는 것이 있습니다. implement Cloneable을 입력하지 않으면 super.clone()을 호출하면 CloneNotSupportedException이 발생합니다.

+0

왜 실수 였는지 설명해 주시겠습니까? –

+2

@MarkRotteveel Cloneable 인터페이스는 clone 메서드를 가져야하고, Object의 protected 복제 메서드는 "활성화"를 요구해서는 안됩니다. 이 인터페이스는 별다른 의미가 없으며 혼란을 야기하면서 실제적인 유용한 목적을 제공하지 않습니다. –

1

어떤 사람들은 C++에서 복사 생성자를 모방하려는 시도이다 말하지만, 여기에 대한 StackOverflow의에 이전과 비슷한 질문 : About Java cloneable

1

목적은 javadoc에 지정됩니다. 이 유형의 오브젝트 복제가 허용되도록 지정하는 것입니다. 클래스합니다 (Object.clone() 방법에 의해 제공) clone()의 내장 구현에 의존하는 경우

는,이 마커 인터페이스 필드 단위 복제 할 수 있습니다. (Cloneable을 구현하지 않는 객체에 내장 된 복제 메서드를 호출하면 CloneNotSupportedException이됩니다.

1

목적은 복제본 객체의 새 인스턴스 (복사본)를 만드는 것입니다. 라는. clone 메소드 사용에 대한 응답에서 볼 수 있듯이 클래스는 Cloneable 인터페이스를 구현해야합니다. 복제를 구현하는 방법을 선택할 수 있으며, 클래스에 대해 얕은 복사본이나 전체 복사본을 만들 수 있습니다. 예 http://javapapers.com/core-java/java-clone-shallow-copy-and-deep-copy/을 볼 수 있습니다.

관련 문제