Junior — Middle
Qual è la differenza tra la creazione di una copia di un oggetto secondo il principio di copia profonda e una copia superficiale?
sobes.tech AI
Risposta dell'AI
Поверхностная копия (shallow copy) создаёт новый объект, но копирует только ссылки на вложенные объекты, а не сами вложенные объекты. Это значит, что изменения во вложенных объектах отразятся и в копии.
Глубокая копия (deep copy) создаёт новый объект и рекурсивно копирует все вложенные объекты, то есть копия полностью независима от оригинала.
Пример на 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() // копия с тем же объектом Address
val deepCopy = original.copy(address = Address(original.address.city)) // создаём новый Address
shallowCopy.address.city = "Saint Petersburg"
println(original.address.city) // выведет "Saint Petersburg" — изменился и оригинал
deepCopy.address.city = "Novosibirsk"
println(original.address.city) // останется "Saint Petersburg" — deepCopy независим