Какие методы автоматически переопределятся при использовании data class

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

Ответ

При объявлении data class автоматически генерируются следующие методы:

  • equals() и hashCode() - для сравнения объектов по их свойствам
  • toString() - в формате "ClassName(prop1=value1, prop2=value2...)"
  • componentN() функции (оператор декомпозиции) для каждого свойства
  • copy() - для создания копии объекта с возможностью изменять отдельные свойства

Пример:

data class User(val name: String, val age: Int)

// Автоматически получаем:
// equals(), hashCode(), toString(), 
// component1() = name, component2() = age
// copy(name="newName", age=30)

Примечание: методы equals(), hashCode() и toString() учитывают только свойства, объявленные в первичном конструкторе.