Wpis z mikrobloga

via Wykop Mobilny (Android)
  • 1
#java #javapomoc
Mam mętlik :P czy metoda equals może mieć w sobie odwołania do metody hashcode żeby sprawdzić czy obiekty są równe? Czy hashcode implementujemy tylko dla kolekcji żeby np nie dodawać duplikatów do Seta?
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@borrow: nie powinna, bo może to skutkować złamaniem kontraktu. jeśli hashcody są różne to equals musi zwrócić false, ale nawet jeśli hashcody są takie same to nie jest powiedziane, że obiekty są takie same. Tak w ogóle to Eclipse czy Intellij oferują generowanie tych metod na podstawie pól, więc moim zdaniem nie ma sensu implementować tego na piechotę o ile nie masz jakiegoś hiper specyficznego przypadku.
  • Odpowiedz
@borrow: Najistotniejszą częścią kontraktu equals i hash code jest to że powinny być implementowane razem oraz
gdy
o1.equals(o2)
to
o1.hashCode() ==
  • Odpowiedz