Что такое equals

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

Ответ

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

Переопределение equals() должно учитывать:

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

Пример:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Person person = (Person) o;
    return age == person.age && Objects.equals(name, person.name);
}

Всегда переопределяйте hashCode(), если переопределяете equals()!