Какие знаешь ограничения у data class в Kotlin

«Какие знаешь ограничения у data class в Kotlin» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Data class в Kotlin имеет несколько ограничений:

  1. Нельзя наследоваться от другого data class (но можно от обычного класса или интерфейса).
  2. Нельзя быть abstract, open, sealed или inner – data class всегда final.
  3. Первичный конструктор должен содержать минимум один параметр (val/var).
  4. Параметры конструктора не могут быть vararg.
  5. Автоматически генерируемые equals(), hashCode(), toString() и copy() работают только с параметрами первичного конструктора.

Пример:

data class User(val id: Int, val name: String) // Корректно  
// data class Empty() // Ошибка: нужен хотя бы один параметр