Что такое метод equals

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

Ответ

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

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

Обязательные требования:

  • Рефлексивность: x.equals(x) == true
  • Симметричность: x.equals(y) == y.equals(x)
  • Транзитивность: если x.equals(y) и y.equals(z), то x.equals(z)
  • Консистентность: повторные вызовы дают одинаковый результат
  • Неравенство с null: x.equals(null) == false

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