Object.Clone Método

Definición

Crea y devuelve una copia de este objeto.

[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

Devoluciones

un clon de esta instancia.

Atributos

Excepciones

si la clase de este objeto no implementa la Cloneable interfaz .

Comentarios

Crea y devuelve una copia de este objeto. El significado preciso de "copy" puede depender de la clase del objeto. La intención general es que, para cualquier objeto x, la expresión: <blockquote>

x.clone() != x

</blockquote> será true y que la expresión: <blockquote>

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

</blockquote> será true, pero no son requisitos absolutos. Aunque suele ser el caso de que: <blockquote>

x.clone().equals(x)

</blockquote> será true, no es un requisito absoluto.

Por convención, el objeto devuelto debe obtenerse llamando a super.clone. Si una clase y todas sus superclases (excepto Object) obedecen esta convención, será el caso de que x.clone().getClass() == x.getClass().

Por convención, el objeto devuelto por este método debe ser independiente de este objeto (que se está clonando). Para lograr esta independencia, puede ser necesario modificar uno o varios campos del objeto devuelto antes super.clone de devolverlo. Normalmente, esto significa copiar cualquier objeto mutable que incluya la "estructura profunda" interna del objeto que se va a clonar y reemplazar las referencias a estos objetos por referencias a las copias. Si una clase contiene solo campos primitivos o referencias a objetos inmutables, normalmente es el caso de que no sea necesario modificar ningún campo del objeto devuelto por super.clone .

El método clone para la clase Object realiza una operación de clonación específica. En primer lugar, si la clase de este objeto no implementa la interfaz Cloneable, se produce una CloneNotSupportedException excepción . Tenga en cuenta que todas las matrices se consideran para implementar la interfaz Cloneable y que el clone tipo devuelto del método de un tipo T[] de matriz es T[] donde T es cualquier referencia o tipo primitivo. De lo contrario, este método crea una nueva instancia de la clase de este objeto e inicializa todos sus campos con exactamente el contenido de los campos correspondientes de este objeto, como si fuera asignación; el contenido de los campos no se clona. Por lo tanto, este método realiza una "copia superficial" de este objeto, no una operación de "copia profunda".

La clase Object no implementa la interfaz Cloneable, por lo que llamar al clone método en un objeto cuya clase se Object producirá una excepción en tiempo de ejecución.

Documentación de Java para java.lang.Object.clone().

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código y se usan según los términos descritos en la creative Commons 2.5.

Se aplica a