Что такое data class в Kotlin?

«Что такое data class в Kotlin?» — вопрос из категории Other, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Data class в Kotlin — это специальный класс, основное назначение которого — хранение данных. Компилятор автоматически генерирует для него стандартные методы на основе свойств, объявленных в первичном конструкторе.

Автоматически генерируемые функции:

  • equals() / hashCode() — для сравнения объектов по значению.
  • toString() — в формате "ИмяКласса(prop1=value1, prop2=value2)".
  • copy() — создает копию объекта с возможностью изменения части свойств.
  • Функции-компоненты (component1(), component2()...) — для поддержки деструктуризации.

Пример и использование:

data class User(val name: String, val age: Int)

fun main() {
    val user1 = User("Alice", 30)
    val user2 = User("Alice", 30)

    println(user1) // User(name=Alice, age=30)
    println(user1 == user2) // true (сравнение по значению)

    val user3 = user1.copy(age = 31) // Копия с измененным возрастом

    val (name, age) = user1 // Деструктуризация
}

Ограничения:

  • Не может быть abstract, open, sealed или inner.
  • Должен иметь как минимум один параметр в первичном конструкторе.
  • Все параметры первичного конструктора должны быть отмечены как val или var.