Понятно, что equals()
(и, конечно, hashCode()
) полезны, когда вы имеете дело с неизменяемыми объектами значений - ключами карты, строго типизированными значениями полей, которые необходимо сравнить между объектами, которые их содержат, и т. Д. .
Но, кроме объектов-значений, как часто действительно бывает, что у вас есть два независимо сконструированных экземпляра, и вы хотите, чтобы они были equal
?
Мне трудно представить реалистичный сценарий, в котором ссылочное равенство не будет, де-факто , получить то, что вы хотите; и в этих конкретных случаях кажется, что метод эквивалентности для конкретного сценария (isEquivalentTo(Foo)
вместо equals(Object)
) будет более безопасным. Особенно для изменчивых объектов?
Какой вариант использования equals()
в типах без значений?