Junior — Middle
¿En qué se diferencia el proceso de duplicación completa de un objeto de su copia superficial?
sobes.tech AI
Respuesta de la IA
La duplicación completa de un objeto (copia profunda) y la copia superficial (copia superficial) difieren en el nivel de copia de objetos anidados:
-
Copia superficial crea un nuevo objeto, pero los campos que son referencias a otros objetos se copian como referencias. Es decir, los objetos anidados no se duplican, sino que se comparten entre el original y la copia.
-
Duplicación completa crea un nuevo objeto y copia recursivamente todos los objetos anidados, creando una copia completamente independiente.
Ejemplo en Java:
import java.util.ArrayList;
import java.util.List;
class Person implements Cloneable {
String name;
List<String> hobbies;
public Person(String name, List<String> hobbies) {
this.name = name;
this.hobbies = hobbies;
}
// Copia superficial
public Person shallowCopy() throws CloneNotSupportedException {
return (Person) this.clone();
}
// Duplicación completa
public Person deepCopy() {
List<String> hobbiesCopy = new ArrayList<>(this.hobbies);
return new Person(this.name, hobbiesCopy);
}
}
En este ejemplo, en la copia superficial, la lista hobbies será compartida entre el original y la copia, mientras que en la copia profunda, se creará una nueva lista.