Object.Clone Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.