Metoda equals pochodząca z klasy Object, ma za zadanie określać czy dane dwa obiekty są identyczne czy nie. Jak wiadomo najlepiej jest tłumaczyć na przykładzie dlatego załóżmy, że implementujemy klasę reprezentującą pracownika o nazwie Employee, mającą trzy atrybuty firstname, lastname oraz department. Zapytasz: a co w tym skomplikowanego? Wystarczy jedynie porównać wszystkie atrybuty jednego obiektu z odpowiednimi atrybutami obiektu drugiego i jeśli zachodzi równość stwierdzić, że obiekty są identyczne. Otóż tak napisana metoda będzie działać prawidłowo. Pokazać chcę jednak implementację nie tylko prawidłową, ale i efektywną.
Sprawdź, czy nie porównujesz obiektu z samym sobą. Wykonaj porównanie referencji wskazującej na aktualny obiekt this z referencją przekazaną jako argument metody. Jeśli zachodzi równość zwróć wartość true.
Sprawdź, czy argument funkcji wskazuje rzeczywiście na obiekt odpowiedniej klasy, w naszym wypadku Employee. Do tego celu skorzystaj z operatora instanceOf. Jeśli klasa się nie zgadza zwróć false
Jeśli dwa wcześniejsze warunki nie rozstrzygnęły jeszcze kwestii równości obiektów przejdź do porównywania atrybutów. Najlepszym rozwiązaniem jest skorzystanie z klasy EqualsBuilder pakietu org.apache.commons.lang.builder.
Co zyskujemy implementując metodę w ten sposób? Zyskujemy czas wykonania porównania, który może zostać zmarnowany na niepotrzebne operacje porównujące atrybuty klasy w przypadku, kiedy jest to zbędne. Czas wykonania metody jest tym, co odróżnia metodę efektywną i działającą poprawnie od metody jedynie logicznie poprawnej.
ścieżka dostępu: Strona główna › Komputery i Internet › Programowanie › Jak efektywnie programować w języku Java? Metoda equals.