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

Как реализуешь сравнение объектов через equals с учетом их типа

Для корректного сравнения объектов через equals() необходимо:

  1. Проверить ссылки на равенство (this == obj)
  2. Проверить тип объекта через instanceof или getClass()
  3. Привести тип и сравнить значимые поля

Пример с instanceof (подходит для наследования):

java
@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (!(obj instanceof MyClass)) return false;
    MyClass other = (MyClass) obj;
    return field1.equals(other.field1) 
        && field2 == other.field2;
}

Пример с getClass() (строгая проверка типа):

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

Всегда переопределяйте hashCode(), если переопределяете equals(). Для сравнения полей используйте Objects.equals() для null-безопасности.

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

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

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

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