Что такое equals у Object в Java

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

Ответ

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

Контракт метода equals():

  1. Рефлексивность: x.equals(x)true
  2. Симметричность: x.equals(y)truey.equals(x)true
  3. Транзитивность: x.equals(y) && y.equals(z)x.equals(z)
  4. Консистентность: Многократный вызов equals() должен возвращать одинаковый результат.
  5. Сравнение с null: x.equals(null)false

Пример переопределения:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass other = (MyClass) obj;
    return Objects.equals(field1, other.field1) && field2 == other.field2;
}

Важно: Всегда переопределять hashCode(), если переопределён equals().