BlackBox object1 = new BlackBox(5, 10);
BlackBox object2 = new BlackBox(5, 10);
System.out.println(object1.hashCode());
System.out.println(object2.hashCode());
System.out.println(object1.equals(object2));
1956725890
356573597
false
Из статьи на хабре: если объекты одинаковые, то и хеш-коды одинаковые (но не наоборот, см. правило 3)
Почему в вышеприведенном примере хеш-коды разные? Почему equals() возвращает false?
Ответ
если объекты одинаковые, то и хеш-коды одинаковые
Это правильное утверждение, только трактуете вы его неверно. Это ваша задача как программиста сделать так, чтобы хешкоды у одинаковых объектов были одинаковы (меру одинаковости выбираете и контролируете вы). Так как нельзя заранее определить, какие объекты будут равны, по умолчанию хешкодом является, емнип, указатель на объект, и в этом случае объект будет равен только себе самому. Чтобы изменить это поведение, вам нужно переопределить методы .hashcode() и .equals()
Комментариев нет:
Отправить комментарий