Object.Clone 메서드

정의

이 개체의 복사본을 만들고 반환합니다.

[Android.Runtime.Register("clone", "()Ljava/lang/Object;", "GetCloneHandler")]
protected virtual Java.Lang.Object Clone ();
[<Android.Runtime.Register("clone", "()Ljava/lang/Object;", "GetCloneHandler")>]
abstract member Clone : unit -> Java.Lang.Object
override this.Clone : unit -> Java.Lang.Object

반환

이 instance 복제본입니다.

특성

예외

이 개체의 클래스가 인터페이스를 구현하지 않으면 입니다 Cloneable .

설명

이 개체의 복사본을 만들고 반환합니다. "copy"의 정확한 의미는 개체의 클래스에 따라 달라질 수 있습니다. 일반적인 의도는 모든 개체 x에 대해 식: <blockquote입니다.>

x.clone() != x

</blockquote> 는 true이고 식은 blockquote입니다 <.>

x.clone().getClass() == x.getClass()

</blockquote> 는 true이지만 절대 요구 사항은 아닙니다. 일반적으로는 blockquote입니다 <.>

x.clone().equals(x)

</blockquote> 는 입니다 true. 절대 요구 사항은 아닙니다.

규칙에 따라 반환된 개체는 를 호출 super.clone하여 가져와야 합니다. 클래스와 모든 슈퍼클래스(제외 Object)가 이 규칙을 준수하는 경우 입니다 x.clone().getClass() == x.getClass().

규칙에 따라 이 메서드에서 반환된 개체는 복제 중인 이 개체와 독립적이어야 합니다. 이러한 독립성을 달성하려면 개체를 반환하기 전에 에서 반환된 super.clone 개체의 필드를 하나 이상 수정해야 할 수 있습니다. 일반적으로 복제되는 개체의 내부 "딥 구조"를 구성하는 변경 가능한 개체를 복사하고 이러한 개체에 대한 참조를 복사본에 대한 참조로 바꾸는 것을 의미합니다. 클래스에 변경할 수 없는 개체에 대한 기본 필드 또는 참조만 포함된 경우 일반적으로 에서 반환 super.clone 된 개체의 필드를 수정할 필요가 없는 경우가 있습니다.

클래스 Object 의 메서드 clone 는 특정 복제 작업을 수행합니다. 먼저 이 개체의 클래스가 인터페이스 Cloneable를 구현하지 않으면 가 CloneNotSupportedException throw됩니다. 모든 배열은 인터페이스 Cloneable 를 구현하는 것으로 간주되며 배열 형식 T[]clone 메서드 반환 형식은 T가 모든 참조 또는 기본 형식인 위치입니다T[]. 그렇지 않으면 이 메서드는 이 개체의 클래스에 대한 새 instance 만들고 이 개체의 해당 필드 내용이 할당된 것처럼 모든 필드를 초기화합니다. 필드 내용 자체는 복제되지 않습니다. 따라서 이 메서드는 "심층 복사" 작업이 아니라 이 개체의 "단순 복사본"을 수행합니다.

클래스 Object 자체는 인터페이스 Cloneable를 구현하지 않으므로 클래스 Object 가 인 개체에서 메서드를 호출 clone 하면 런타임에 예외가 throw됩니다.

에 대한 Java 설명서입니다 java.lang.Object.clone().

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

적용 대상