Zaradni.pl

Jak efektywnie programować w języku Java? Metoda equals.

2009-07-07

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ą.

krok 1

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.

krok 2

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

krok 3

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.

krok 4

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.

Lista potrzebnych rzeczy:

  • Wirtualna maszyna Javy w wersji 1.5
  • pakiet org.apache.commons.lang.builder

Wasze komentarze (3)

super! porada jakich malo. wiecej takich artykulow. tego mi bylo trzeba zeby zaczac programowac
Porada przydatna dla zaawansowanych:) Fajne byłyby też porady dla tych, którzy dopiero chcieliby zacząć programować
Postaram się napisać i takie dla początkujących.

Dodaj swój komentarz:

  1. O serwisie
  2. Konkursy
  3. Program udziału w zyskach
  4. Polityka prywatności
  5. Regulamin
  6. Unia Europejska
  7. Reklama
  8. Kontakt