마커 인터페이스이므로 복제 가능한 인터페이스를 구현하는 용도는 무엇입니까?java에서 cloneable 인터페이스를 사용하는 것은 무엇입니까?
나는 항상 내 수업에서 공용 Object clone() 메소드를 만들 수 있습니다. 복제 가능 인터페이스의 실제 목적은 무엇입니까?
마커 인터페이스이므로 복제 가능한 인터페이스를 구현하는 용도는 무엇입니까?java에서 cloneable 인터페이스를 사용하는 것은 무엇입니까?
나는 항상 내 수업에서 공용 Object clone() 메소드를 만들 수 있습니다. 복제 가능 인터페이스의 실제 목적은 무엇입니까?
Cloneable
이 아닌 경우 clone()
메서드가 CloneNotSupportedException
을 throw하기 때문입니다.
documentation for clone()
메서드를 살펴보아야합니다. 다음
clone()
방법은 클래스 Object
에 선언하는 방법입니다
protected Object clone() throws CloneNotSupportedException
참고 :
또한,이 Clone
가 깨진 것을 알게 됐어요. 그래서 여기에 This answer을 사용하는 이유와 방법을 설명합니다.
Cloneable
마커 인터페이스는 실수였습니다.
즉, clone()
의 기본 구현을 Object
에서 "활성화"하는 것이 있습니다. implement Cloneable
을 입력하지 않으면 super.clone()
을 호출하면 CloneNotSupportedException
이 발생합니다.
어떤 사람들은 C++에서 복사 생성자를 모방하려는 시도이다 말하지만, 여기에 대한 StackOverflow의에 이전과 비슷한 질문 : About Java cloneable
목적은 javadoc에 지정됩니다. 이 유형의 오브젝트 복제가 허용되도록 지정하는 것입니다. 클래스합니다 (Object.clone()
방법에 의해 제공) clone()
의 내장 구현에 의존하는 경우
는,이 마커 인터페이스 는 필드 단위 복제 할 수 있습니다. (Cloneable
을 구현하지 않는 객체에 내장 된 복제 메서드를 호출하면 CloneNotSupportedException
이됩니다.
목적은 복제본 객체의 새 인스턴스 (복사본)를 만드는 것입니다. 라는. clone 메소드 사용에 대한 응답에서 볼 수 있듯이 클래스는 Cloneable 인터페이스를 구현해야합니다. 복제를 구현하는 방법을 선택할 수 있으며, 클래스에 대해 얕은 복사본이나 전체 복사본을 만들 수 있습니다. 예 http://javapapers.com/core-java/java-clone-shallow-copy-and-deep-copy/을 볼 수 있습니다.
왜 실수 였는지 설명해 주시겠습니까? –
@MarkRotteveel Cloneable 인터페이스는 clone 메서드를 가져야하고, Object의 protected 복제 메서드는 "활성화"를 요구해서는 안됩니다. 이 인터페이스는 별다른 의미가 없으며 혼란을 야기하면서 실제적인 유용한 목적을 제공하지 않습니다. –