Junior — Middle
Čime se razlikuje proces potpune duplikacije objekta od njegovog površinskog kopiranja?
sobes.tech АИ
Одговор од АИ
Potpuno dupliranje objekta (deep copy) i površno kopiranje (shallow copy) razlikuju se u nivou kopiranja uvučenih objekata:
-
Površno kopiranje kreira novi objekat, ali polja koja su reference na druge objekte kopiraju se kao reference. Drugim rečima, uvučeni objekti se ne dupliraju, već dele između originala i kopije.
-
Potpuno dupliranje kreira novi objekat i rekurzivno kopira sve uvučene objekte, stvarajući potpuno nezavisnu kopiju.
Primer u Javi:
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;
}
// Površno kopiranje
public Person shallowCopy() throws CloneNotSupportedException {
return (Person) this.clone();
}
// Potpuno dupliranje
public Person deepCopy() {
List<String> hobbiesCopy = new ArrayList<>(this.hobbies);
return new Person(this.name, hobbiesCopy);
}
}
U ovom primeru, u površnom kopiranju, lista hobbies će biti podeljena između originala i kopije, dok će u dubokom kopiranju biti kreirana nova lista.