Как стандартно генерируется метод equals в Java

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

Ответ

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    MyClass myClass = (MyClass) o;

    return Objects.equals(field1, myClass.field1) &&
           Objects.equals(field2, myClass.field2);
}

Ключевые моменты:

  1. Проверка на this == o для оптимизации
  2. Проверка на null и совпадение классов
  3. Кастинг объекта
  4. Сравнение всех значимых полей через Objects.equals() (обрабатывает null)
  5. Для примитивов можно использовать ==

Лучше генерировать через IDE (Alt+Insert в Android Studio) - это минимизирует ошибки.