¿Qué es la clonación de objetos en vb6 o java? ¿En qué situación usamos un clon? ¿Qué significan los objetos de clonación? ¿Puede alguien decirme con el ejemplo, por favor?¿Qué significa clonar() un objeto?
Respuesta
La clonación consiste en copiar los datos del objeto en un nuevo objeto.
Este ejemplo no clonar los datos:
Foo p = new Foo();
Foo o = p;
Si Foo
tiene un miembro a
y se cambia a continuación p.a
o.a
cambios también porque ambos p
y o
apuntan al mismo objeto.
Sin embargo,
Foo p = new Foo();
Foo o = p.Clone();
En este caso, si se cambia p.a
continuación o.a
sigue siendo el mismo, ya que en realidad apuntan a separar objetos.
En realidad, hay dos maneras diferentes de clonar: clon superficial o clon profundo.
Un clon superficial solo hace un objeto nuevo y copia los miembros en el nuevo objeto. Esto significa que si uno de los miembros es realmente un puntero a otro objeto, ese objeto se compartirá entre el objeto antiguo y el nuevo.
Un clon profundo realmente atraviesa y clona todos los miembros en el nuevo objeto. De esa forma, los objetos son copias completas de todos los datos.
Por cierto, hay una tercera forma de clonación: un clon de nivel semántico. Un clon de nivel semántico de, p. a List
@supercat - ¿Cómo es eso diferente a un clon superficial de la lista? – Aaron
@ Aaron: Supongamos que una colección se implementa como una referencia a una matriz junto con un recuento de cuántos elementos son válidos. Un clon superficial de un objeto que contiene dicha colección sería un nuevo objeto con un recuento de elementos válidos copiados pero una referencia a la misma matriz de elementos que el original. Un clon de nivel sematic tendría un recuento copiado y una referencia a un clon superficial de la matriz. – supercat
Generalmente, los objetos que hablan se pasan por referencia. Entonces, si dices $objB=$objA
, no obtienes un objeto nuevo; está obteniendo un nuevo nombre para el mismo objeto. Sin embargo, si dices $objB= clone $objA
obtienes una copia de $objA
. En el primer caso, haga lo que haga en $objB
, también pasa al $objA
. En el segundo caso, $objB
es independiente.
- 1. AS3 - Clonar un objeto
- 2. Cómo clonar un objeto Date en JavaScript
- 3. ¿Qué significa @object objeto
- 4. ¿Qué significa {0} al inicializar un objeto?
- 5. ¿Qué significa serializar datos o un objeto?
- 6. entero Objeto Clonar Gráfico
- 7. ¿qué significa esto clonar el repositorio de GitHub?
- 8. ¿Cómo "clonar" un objeto en un objeto de subclase?
- 9. Exactamente clonar un objeto en javascript
- 10. Cómo puedo clonar un objeto JAXB
- 11. ¿Cómo clonar un objeto generador de Python?
- 12. ¿Cómo puedo clonar un objeto de diccionario?
- 13. ¿Usando Parcel para clonar un objeto?
- 14. ¿Cómo se puede clonar un objeto WPF?
- 15. cómo clonar un objeto en Android?
- 16. Cómo clonar un objeto en Flex?
- 17. ¿Cómo crear y clonar un objeto JSON?
- 18. Cómo clonar el objeto js?
- 19. ¿Qué significa el "objeto más derivado"?
- 20. ¿Qué significa una auto-anotación de objeto?
- 21. ¿Qué significa el objeto 'thread safe'?
- 22. ¿Qué significa usar (objeto obj = new Object())?
- 23. ¿Qué significa instanciar un objeto usando llaves en C++?
- 24. Cómo clonar un objeto Java con el método clone()
- 25. ¿Por qué no se puede clonar IEnumerator?
- 26. ¿Qué significa @! significa en un De declaración
- 27. ¿Cómo puedo clonar un objeto DateTime en C#?
- 28. ¿Qué significa "babosa" significa
- 29. ¿Qué significa Field.Index.NOT_ANALYZED_NO_NORMS significa
- 30. ¿Qué significa ('../') significa?
Parece obvio para personas experimentadas, pero los principiantes a menudo luchan con "hey, ¿por qué mi objeto cambió cuando cambié este 'otro'?". La comprensión de que los nombres son básicamente punteros aglutinados viene lentamente (y la comprensión de la clonación acelera enormemente ese proceso). –