Зачем нужен метод equals в Kotlin

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

Ответ

Метод equals в Kotlin используется для сравнения объектов на содержательное равенство (по значению), в отличие от оператора ==, который по умолчанию вызывает equals. По умолчанию equals сравнивает ссылки (===), но его можно переопределить для сравнения по полям.

Пример:

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

val person1 = Person("Alice", 25)
val person2 = Person("Alice", 25)
println(person1 == person2) // true (благодаря data class)

Без data class:

class Person(val name: String, val age: Int) {
    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (other !is Person) return false
        return name == other.name && age == other.age
    }
}

Важно: При переопределении equals всегда переопределяйте hashCode(), чтобы соблюдать контракт equals-hashCode.