Sobes.tech
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.