Ответ
Да, работал. 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() чего стоит, когда нужно слегка видоизменить объект, а не городить огород. Просто огонь, а не инструмент.