Что такое глубокое клонирование

«Что такое глубокое клонирование» — вопрос из категории ООП, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Глубокое клонирование — это создание копии объекта вместе со всеми вложенными объектами, а не просто копирование ссылок на них. В отличие от поверхностного клонирования, где вложенные объекты остаются общими, глубокое клонирование создает полностью независимую копию.

Пример в 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()

Способы реализации:

  1. Ручное копирование (как в примере)
  2. Сериализация/десериализация (через Gson, Moshi)
  3. Использование библиотек (например, Apache Commons)

Важно: стандартный метод clone() в Java/Kotlin обычно делает поверхностное копирование.