Object.Clone 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 개체의 복사본을 만들고 반환합니다.
[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()
.
이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.