Object.Clone Methode

Definition

Erstellt und gibt eine Kopie dieses Objekts zurück.

[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

Gibt zurück

Ein Klon dieses instance.

Attribute

Ausnahmen

, wenn die -Klasse dieses Objekts die Cloneable -Schnittstelle nicht implementiert.

Hinweise

Erstellt und gibt eine Kopie dieses Objekts zurück. Die genaue Bedeutung von "copy" kann von der -Klasse des Objekts abhängen. Die allgemeine Absicht ist, dass für jedes Objekt xder Ausdruck blockquote <>

x.clone() != x

</blockquote> ist true, und der Ausdruck: <blockquote>

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

</blockquote> ist true, aber dies sind keine absoluten Anforderungen. Es ist in der Regel der Fall, dass: <blockquote>

x.clone().equals(x)

</blockquote> ist true, dies ist keine absolute Anforderung.

Gemäß der Konvention sollte das zurückgegebene Objekt durch Aufrufen super.clonevon abgerufen werden. Wenn eine Klasse und alle ihre Superklassen (außer Object) dieser Konvention folgen, ist es der Fall, dass x.clone().getClass() == x.getClass().

Gemäß Konvention sollte das von dieser Methode zurückgegebene Objekt unabhängig von diesem Objekt sein (das geklont wird). Um diese Unabhängigkeit zu erreichen, kann es erforderlich sein, ein oder mehrere Felder des von super.clone zurückgegebenen Objekts zu ändern, bevor es zurückgegeben wird. In der Regel bedeutet dies das Kopieren von veränderlichen Objekten, die die interne "tiefe Struktur" des geklonten Objekts umfassen, und das Ersetzen der Verweise auf diese Objekte durch Verweise auf die Kopien. Wenn eine Klasse nur primitive Felder oder Verweise auf unveränderliche Objekte enthält, müssen in der Regel keine Felder im Von zurückgegebenen super.clone Objekt geändert werden.

Die -Methode clone für die -Klasse Object führt einen bestimmten Klonvorgang aus. Wenn die -Klasse dieses Objekts die -Schnittstelle Cloneablenicht implementiert, wird zunächst ein CloneNotSupportedException ausgelöst. Beachten Sie, dass alle Arrays davon ausgegangen werden, dass sie die Schnittstelle Cloneable implementieren, und dass der Rückgabetyp der clone Methode eines Arraytyps T[] ist T[] , wobei T ein verweis- oder primitiver Typ ist. Andernfalls erstellt diese Methode eine neue instance der -Klasse dieses Objekts und initialisiert alle zugehörigen Felder mit genau dem Inhalt der entsprechenden Felder dieses Objekts, wie durch Zuweisung. Die Inhalte der Felder selbst werden nicht geklont. Daher führt diese Methode eine "flache Kopie" dieses Objekts aus, keinen "deep copy"-Vorgang.

Die -Klasse Object selbst implementiert die -Schnittstelle Cloneablenicht, sodass der Aufruf der clone -Methode für ein Objekt, dessen Klasse ist Object , zur Laufzeit eine Ausnahme auslöst.

Java-Dokumentation für java.lang.Object.clone().

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: