Czy dwa obiekty będą zawsze równe, gdy ich metoda CompareTo() zwróci zero?
Czy dwa obiekty będą zawsze równe, gdy ich metoda CompareTo() zwróci zero?

Wideo: Czy dwa obiekty będą zawsze równe, gdy ich metoda CompareTo() zwróci zero?

Wideo: Czy dwa obiekty będą zawsze równe, gdy ich metoda CompareTo() zwróci zero?
Wideo: The Open Road | Critical Role: THE MIGHTY NEIN | Episode 5 2024, Listopad
Anonim

Ono jest polecam to porównać do tylko zwroty 0, jeśli wezwanie do równa się na te same przedmioty zrobiłbym powrót prawda: porównać do (e2) == 0 Ma to samo wartość logiczna jako e1. równa się (e2) dla każdego e1 i e2 klasy C. Zauważ, że null jest nie jest instancją żadnej klasy, i e.

Co więcej, czy równanie równości () może zwrócić wartość false, nawet jeśli zawartość dwóch obiektów jest taka sama?

4 odpowiedzi. W java metoda public boolean równa się ( Obiekt obj) jest dziedziczony z Obiekt . Jednak wdrożenie metody określonej w Obiekt klasa jest taka, że równa się metoda będzie zwróć, jeśli i tylko Jeśli ten dwa obiekty porównywane są To samo instancja.

Następnie pojawia się pytanie, dlaczego metoda CompareTo () powinna być spójna z metodą równa się () w Javie? Dzieje się tak, ponieważ interfejs Mapy jest zdefiniowany w kategoriach równa się operacja, ale mapa wykonuje wszystkie kluczowe porównania za pomocą swojego porównać do (lub porównaj) metoda , więc dwa klucze, które są uważane równy przez to metoda są, z punktu widzenia posortowanej mapy, równy.

Mając to na uwadze, jaka jest różnica między metodą == equals () a metodą CompareTo ()?

porównać do : Porównuje dwa ciągi leksykograficznie. równa się : porównuje ten ciąg z określonym obiektem. porównać do porównuje dwa ciągi znaków według ich znaków (o tym samym indeksie) i odpowiednio zwraca liczbę całkowitą (dodatnią lub ujemną). równa się() sprawdza, czy dwa obiekty są takie same, czy nie i zwraca wartość logiczną.

Czy możemy nadpisać metodę CompareTo?

Zastąp porównanie do metody Powinien zwrócić ujemną liczbę całkowitą (zwykle -1), jeśli bieżący obiekt wyzwalający jest mniejszy niż przekazany jeden i dodatnia liczba całkowita (zwykle +1), jeśli jest większa niż i 0, jeśli jest równa. Metoda porównaj do powinien zgłaszać wyjątek, jeśli przekazany obiekt ma niezgodny typ lub null.

Zalecana: