Sobes.tech
Junior — Middle

Wat is het verschil tussen het proces van volledige duplicatie van een object en de oppervlakkige kopie ervan?

sobes.tech AI

Antwoord van AI

Het volledig dupliceren van een object (deep copy) en oppervlakkige kopie (shallow copy) verschillen in het niveau van kopiëren van geneste objecten:

  • Oppervlakkige kopie maakt een nieuw object aan, maar velden die verwijzingen zijn naar andere objecten worden als verwijzingen gekopieerd. Met andere woorden, geneste objecten worden niet gedupliceerd, maar gedeeld tussen het origineel en de kopie.

  • Volledige duplicatie maakt een nieuw object en kopieert recursief alle geneste objecten, waardoor een volledig onafhankelijke kopie ontstaat.

Voorbeeld in 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;
    }

    // Oppervlakkige kopie
    public Person shallowCopy() throws CloneNotSupportedException {
        return (Person) this.clone();
    }

    // Volledige duplicatie
    public Person deepCopy() {
        List<String> hobbiesCopy = new ArrayList<>(this.hobbies);
        return new Person(this.name, hobbiesCopy);
    }
}

In dit voorbeeld wordt bij oppervlakkige kopie de lijst hobbies gedeeld tussen het origineel en de kopie, terwijl bij diepe kopie een nieuwe lijst wordt gemaakt.