Ответ
Метод equals() в Java используется для сравнения объектов на логическую эквивалентность (по содержимому), в отличие от ==, который сравнивает ссылки.
Контракт equals():
- Рефлексивность:
x.equals(x)→true - Симметричность: если
x.equals(y), тоy.equals(x) - Транзитивность: если
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;
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
Важно:
- Всегда переопределяйте
hashCode(), если переопределяетеequals()(иначе нарушится контракт дляHashMap,HashSet). - Используйте
Objects.equals()для безопасного сравнения строк и nullable-полей.