Ответ
В 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 - свойства одинаковые
Ключевые особенности:
- Сравниваются только свойства из конструктора (не var/val в теле класса)
- Null-значения обрабатываются корректно
- Для массива используется
contentEquals(), а не== - Генерированный метод соответствует контракту
equals()(рефлексивность, симметричность и т.д.)
Для кастомного сравнения нужно переопределить equals() вручную.