Назад к вопросам
Формат кода
Junior — Middle
67
Какие основные требования и свойства должны быть у метода equals в Java?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Метод equals в Java должен удовлетворять следующим основным требованиям и свойствам:
- Рефлексивность: для любого ненулевого объекта
xвыражениеx.equals(x)должно возвращатьtrue. - Симметричность: для любых ненулевых объектов
xиyвыражениеx.equals(y)должно возвращатьtrueтогда и только тогда, когдаy.equals(x)возвращаетtrue. - Транзитивность: если
x.equals(y)иy.equals(z)возвращаютtrue, то иx.equals(z)должно возвращатьtrue. - Согласованность: многократные вызовы
x.equals(y)должны возвращать одно и то же значение, если объекты не изменяются. - Отношение к null: для любого ненулевого объекта
xвыражениеx.equals(null)должно возвращатьfalse.
Пример реализации метода 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 Objects.equals(field1, other.field1) && field2 == other.field2;
}
Важно, что при переопределении equals необходимо также переопределять hashCode, чтобы сохранить контракт между этими методами.