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

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

По умолчанию equals() наследуется от Object и сравнивает ссылки (как ==). Переопределять его необязательно, если:

  1. Нужно сравнение по ссылкам – например, для синглтонов или когда уникальность экземпляров важна.
  2. Класс неизменяем (final) и наследует корректную реализацию – например, String или Integer уже переопределяют equals().

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

java
class Singleton {
    private static Singleton instance = new Singleton();
    
    public static Singleton getInstance() {
        return instance;
    }
    
    // equals() не переопределён – сравнение по ссылкам
}

Singleton a = Singleton.getInstance();
Singleton b = Singleton.getInstance();
System.out.println(a.equals(b)); // true (та же ссылка)

⚠️ Но если логика сравнения объектов должна учитывать их состояние, equals() нужно переопределять вместе с hashCode().

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

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

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

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