Core - 1

Назовите правила переопределения метода Object.equals()?


Правила переопределения метода `Object.equals()` следующие: 1. Рефлексивность: Метод `equals()` должен быть рефлексивным, то есть для любого ненулевого объекта `x` , вызов `x.equals(x)` должен возвращать `true` . 2. Симметричность: Метод `equals()` должен быть симметричным, то есть для любых ненулевых объектов `x` и `y` , если `x.equals(y)` возвращает `true` , то `y.equals(x)` также должен возвращать `true` . 3. Транзитивность: Метод `equals()` должен быть транзитивным, то есть для любых ненулевых объектов `x` , `y` и `z` , если `x.equals(y)` возвращает `true` и `y.equals(z)` возвращает `true` , то `x.equals(z)` также должен возвращать `true` . 4. Консистентность: Метод `equals()` должен быть консистентным, то есть для любых ненулевых объектов `x` и `y` , повторные вызовы `x.equals(y)` должны возвращать одинаковый результат, если никакая информация, используемая в `equals()` , не изменяется. 5. Неравенство с `null` : Метод `equals()` должен возвращать `false` , если аргумент, переданный в метод, является `null` . 6. Тип объекта: Метод `equals()` должен возвращать `false` , если аргумент, переданный в метод, имеет другой тип, чем тип вызывающего объекта. При переопределении метода `equals()` также рекомендуется переопределить метод `hashCode()` , чтобы обеспечить согласованность между этими двумя методами.


Копировать ссылку