Problem z equals() przy kopiowaniu obiektów.

0

Witam, dlaczego metoda equals zwraca falszywy wynik jesli kopia obiektu (głeboka kopia) byla uzyta do zainicjowania 2-giego obiektu odcinek1?
[code]
Punkt punkt = new Punkt(0, 0);

    Odcinek odcinek = new Odcinek(punkt, punkt);
    Odcinek odcinek1 = (Odcinek) odcinek.clone();

[/code]

Jak widac obiekty sa rowne w wartosciach, nic w innej czesci nie zmieniam, dlaczego tak jest? Przy porownaniu == rozumiem, ze false, bo sprawdza rownosc referencji, ale metoda equals sprawdza dodatkowo wartosc pol obiektow, gdzie one sa rowne przeciez...

Kod: https://pastebin.com/jxuMBuTA

0

Equals, jeśli nie jest przesłonięte, jest równoważne z ==. Musisz przesłonić tę metodę i sprawdzać w niej pola.

0

Bo equals domyślnie porównuje referencje. Musisz sam przesłonić tą metodę i pamiętać i o kontrakcie z hashCode()
I pisz po angielsku taka moja propozycja jest :D

0

Już to gdzieś wrzucałem, Przeczytaj dokładnie to.

1 użytkowników online, w tym zalogowanych: 0, gości: 1