Что можно нельзя делать с data class

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

Ответ

Data class в Kotlin — удобный инструмент для хранения данных, но есть ограничения:

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

Пример:

data class User(val id: Int, var name: String)
val user = User(1, "Alex")
val updatedUser = user.copy(name = "Max") // name — var, можно изменить