Ответ
Контракт equals() определяет правила переопределения метода для корректного сравнения объектов. Основные требования:
- Рефлексивность:
x.equals(x)→true - Симметричность:
x.equals(y)→y.equals(x) - Транзитивность: Если
x.equals(y)иy.equals(z), тоx.equals(z) - Консистентность: Многократные вызовы
equals()должны возвращать одинаковый результат - Сравнение с null:
x.equals(null)→false
Пример:
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is MyClass) return false
return this.id == other.id && this.name == other.name
}
⚠️ Всегда переопределяйте hashCode(), если переопределяете equals()!