Ответ
Data class в Kotlin — это синтаксический сахар, который генерирует boilerplate-код автоматически. Под капотом компилятор создает:
equals()/hashCode()— сравнивает свойства по значению.toString()— выводит имя класса и значения свойств.componentN()— функции для деструктуризации.copy()— создает копию с возможностью изменения отдельных свойств.
Пример декомпилированного Java-кода (упрощенно):
data class User(val name: String, val age: Int)
Превращается в:
public final class User {
private final String name;
private final int age;
// Геттеры, equals, hashCode, toString, copy и componentN()
}
Ограничения:
- Свойства должны быть в конструкторе (
val/var). - Нельзя наследовать data class (если он не
open). componentN()работают только для свойств конструктора.