Встречается на собеседованиях • сегодня

Зачем переопределять метод equals()

Переопределение equals() необходимо для корректного сравнения объектов по их содержимому, а не по ссылке (как делает дефолтная реализация). Например, для объектов Person с полями name и age:

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

Важно:

  • Всегда переопределять hashCode() вместе с equals() (контракт Java)
  • Соблюдать рефлексивность, симметричность, транзитивность и консистентность
  • Использовать Objects.equals() для безопасного сравнения полей (учёт null)

Без переопределения equals() коллекции (например, HashSet) будут работать некорректно.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы