Что такое контракт equals

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

Ответ

Контракт equals() определяет правила переопределения метода для корректного сравнения объектов. Основные требования:

  1. Рефлексивность: x.equals(x)true
  2. Симметричность: x.equals(y)y.equals(x)
  3. Транзитивность: Если x.equals(y) и y.equals(z), то x.equals(z)
  4. Консистентность: Многократные вызовы equals() должны возвращать одинаковый результат
  5. Сравнение с 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()!