Object.Clone Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 x
der 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.clone
von 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 Cloneable
nicht 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 Cloneable
nicht, 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.