На что повлияет отсутствие полей в конструкторе data class

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

Ответ

Отсутствие полей в конструкторе data class сделает его бесполезным, так как основные функции data-классов генерируются только для свойств, объявленных в первичном конструкторе:

  1. Не будут сгенерированы equals(), hashCode(), toString()
  2. Не будет componentN() функций для деструктуризации
  3. Не будет copy() функции

Пример:

data class Empty()  // Бесполезный data-класс
val a = Empty()
val b = Empty()
println(a == b)  // true (сравниваются ссылки, не содержимое)

Такой класс будет вести себя как обычный класс, теряя все преимущества data-класса.