Junior — Middle
Wat is het verschil tussen het maken van een kopie van een object volgens het principe van diepe kopie en een oppervlakkige kopie?
sobes.tech AI
Antwoord van AI
De oppervlakkige kopie (shallow copy) maakt een nieuw object aan, maar kopieert alleen de verwijzingen naar de geneste objecten, niet de objecten zelf. Dit betekent dat wijzigingen in de geneste objecten ook in de kopie worden weerspiegeld.
De diepe kopie (deep copy) maakt een nieuw object en kopieert recursief alle geneste objecten, zodat de kopie volledig onafhankelijk is van het origineel.
Voorbeeld in Kotlin:
data class Person(var name: String, var address: Address)
data class Address(var city: String)
val original = Person("Ivan", Address("Moscow"))
val shallowCopy = original.copy() // kopie met hetzelfde Address-object
val deepCopy = original.copy(address = Address(original.address.city)) // maken we een nieuwe Address
shallowCopy.address.city = "Saint Petersburg"
println(original.address.city) // zal "Saint Petersburg" tonen — ook het origineel is veranderd
deepCopy.address.city = "Novosibirsk"
println(original.address.city) // blijft "Saint Petersburg" — deepCopy is onafhankelijk