Ответ
Метод equals() в Java используется для сравнения объектов на логическую эквивалентность (по содержимому), в отличие от ==, который сравнивает ссылки.
Контракт метода equals():
- Рефлексивность:
x.equals(x)→true - Симметричность:
x.equals(y)→true⇔y.equals(x)→true - Транзитивность:
x.equals(y) && y.equals(z)→x.equals(z) - Консистентность: Многократный вызов
equals()должен возвращать одинаковый результат. - Сравнение с
null:x.equals(null)→false
Пример переопределения:
@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().