Ответ
Метод equals() используется для сравнения объектов на содержательное равенство (по значению полей), в отличие от оператора ==, который сравнивает ссылки (адреса в памяти).
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return field1 == other.field1 && Objects.equals(field2, other.field2);
}
Обязательные требования:
- Рефлексивность:
x.equals(x) == true - Симметричность:
x.equals(y) == y.equals(x) - Транзитивность: если
x.equals(y)иy.equals(z), тоx.equals(z) - Консистентность: повторные вызовы дают одинаковый результат
- Неравенство с
null:x.equals(null) == false
Всегда переопределяйте hashCode(), если переопределяете equals(), чтобы соблюдать контракт hashCode-equals.