middle
Правила переопределения метода `Object.equals()`.
- Использование оператора
==для проверки, является ли аргумент ссылкой на указанный объект. Если является, возвращаетсяtrue. Если сравниваемый объект== null, должно вернутьсяfalse. - Использование вызова метода
getClass()для проверки, имеет ли аргумент правильный тип. Если не имеет, возвращаетсяfalse. - Приведение аргумента к правильному типу. Поскольку эта операция следует за проверкой
instanceofона гарантированно будет выполнена. - Обход всех значимых полей класса и проверка того, что значение поля в текущем объекте и значение того же поля в проверяемом на эквивалентность аргументе соответствуют друг другу. Если проверки для всех полей прошли успешно, возвращается результат
true, в противном случае -false.
По окончанию переопределения метода equals() следует проверить: является ли порождаемое отношение эквивалентности рефлексивным, симметричным, транзитивным и непротиворечивым? Если ответ отрицательный, метод подлежит соответствующей правке.