Jak efektywnie programować w języku Java? Metoda equals.
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ą.
Kroki
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.
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
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.
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.
Oceń tę poradę
4.3
(8 glosow)
Twoja ocena:
Komentarze
Komentarze (5)
Zaloguj się, aby dodać komentarz.
P
Patrycja Zaradni.pl
15 lat temu
Jak dla mnie to porada jak z kosmosu :P
U
Autor Zaradni.pl
15 lat temu
Czysto i klarownie wytłumaczone, na pewno się przyda :)
Z
Autor Zaradni
16 lat temu
Postaram się napisać i takie dla początkujących.
M
Redakcja Zaradni.pl
16 lat temu
Porada przydatna dla zaawansowanych:) Fajne byłyby też porady dla tych, którzy dopiero chcieliby zacząć programować
P
Adam Pietrzykowski
16 lat temu
super! porada jakich malo. wiecej takich artykulow. tego mi bylo trzeba zeby zaczac programowac