81 подписчик
🧠 Если вы хотите переопределить equals(), какие условия должны выполняться?
- Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
- Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
- Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
- Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.
-Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.
На картинкее приведен пример, по которому все будет понятно, также не надо забывать, что при переопределении метода equals() необходимо переопределить метод hashCode().
Около минуты
8 апреля 2022