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

Почему нельзя использовать equals не переопределяя его

По умолчанию equals() наследуется от Object и сравнивает ссылки, а не содержимое объектов. Это значит, что даже если два объекта имеют одинаковые поля, equals() вернет false, если это разные экземпляры.

Пример:

java
class Person {
    String name;
    Person(String name) { this.name = name; }
}

Person p1 = new Person("Alice");
Person p2 = new Person("Alice");
System.out.println(p1.equals(p2)); // false - сравниваются ссылки

text

Для корректного сравнения нужно переопределять `equals()`, учитывая значимые поля объекта. При этом важно также переопределять `hashCode()`, чтобы соблюдать контракт: равные объекты должны иметь одинаковый хэш-код.

Не переопределенный `equals()` может привести к ошибкам в коллекциях (`HashSet`, `HashMap`), где сравнение объектов критично.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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