Ответ
Глубокое клонирование — это создание копии объекта вместе со всеми вложенными объектами, а не просто копирование ссылок на них. В отличие от поверхностного клонирования, где вложенные объекты остаются общими, глубокое клонирование создает полностью независимую копию.
Пример в Kotlin:
data class Person(val name: String, val address: Address) {
fun deepCopy() = copy(address = address.copy())
}
data class Address(val city: String)
val original = Person("Alex", Address("Moscow"))
val deepCopy = original.deepCopy()
Способы реализации:
- Ручное копирование (как в примере)
- Сериализация/десериализация (через Gson, Moshi)
- Использование библиотек (например, Apache Commons)
Важно: стандартный метод clone() в Java/Kotlin обычно делает поверхностное копирование.