Работал ли с data class в Kotlin

Ответ

Да, работал. Data class в Kotlin — это удобный способ создания классов, предназначенных для хранения данных. Автоматически генерирует equals(), hashCode(), toString(), copy() и методы для деструктуризации.

Пример:

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

// Использование
val user = User("Alex", 25)
val (name, age) = user // деструктуризация
val copy = user.copy(age = 26) // копирование с изменением поля

Особенности:

  • Должен иметь хотя бы один параметр в конструкторе.
  • Не может быть abstract, open, sealed или inner.
  • Можно переопределять сгенерированные методы, если нужно изменить логику.

Идеально подходит для моделей данных, DTO и состояний.

Ответ 18+ 🔞

А, ну это же про data class в Kotlin! Да, работал, конечно, работал. Это ж просто конфетка, а не фича, ёпта. Всё сделано для того, чтобы не писать эту рутину вручную, пока пальцы не отвалятся.

Вот смотри, как это выглядит:

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

// Использование
val user = User("Alex", 25)
val (name, age) = user // деструктуризация
val copy = user.copy(age = 26) // копирование с изменением поля

А теперь по сути, что там под капотом:

  • Хотя бы один параметр в конструкторе — это обязаловка, иначе какой смысл в классе данных? Пустой data class — это уже какая-то мудя, хуй с горы.
  • Не может быть abstract, open, sealed или inner — тут всё строго, он должен быть конечным и конкретным, как приговор. Нельзя с ним эти ваши полиморфные игры играть.
  • Можно переопределить сгенерированные методы — ну, на случай, если стандартная логика тебе не подходит и ты чувствуешь в себе силы сделать это умнее. Но обычно и так норм.

В общем, идеальная штука для всяких моделек, DTOшек и состояний. Не надо самому equals с hashCode писать, toString красивый генерируется — красота, ебать мои старые костыли. Один copy() чего стоит, когда нужно слегка видоизменить объект, а не городить огород. Просто огонь, а не инструмент.