Как работает equals() в Data Class

«Как работает equals() в Data Class» — вопрос из категории Kotlin, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kotlin data class автоматически генерирует equals(), который сравнивает все свойства, объявленные в первичном конструкторе.

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

val user1 = User("Alex", 25)
val user2 = User("Alex", 25)
println(user1 == user2) // true - свойства одинаковые

Ключевые особенности:

  1. Сравниваются только свойства из конструктора (не var/val в теле класса)
  2. Null-значения обрабатываются корректно
  3. Для массива используется contentEquals(), а не ==
  4. Генерированный метод соответствует контракту equals() (рефлексивность, симметричность и т.д.)

Для кастомного сравнения нужно переопределить equals() вручную.