Przejdź do treści
Strona główna » Kurs Java wrzesień – [5]

Kurs Java wrzesień – [5]

  • przez
java, kurs java, spring

Metoda Equals

Kontynuując rozważanie z Projektu Company w JAVA, zastanówmy się, co się stanie jeśli porównamy 2 obiekty employee metoda equals z klasy Object ?

        Employee employee1 = employeeRepo.create(TEST, TEST, TEST+1, SALARY_TEST);
        Employee employee2 = employeeRepo.create(TEST, TEST, TEST+2, SALARY_TEST);

        System.out.println(  employee1.equals(employee2) );

        System.out.println( employee1.toString() );
        System.out.println( employee2.toString() );

false
pl.com.company.model.Employee@569b1b71
pl.com.company.model.Employee@569b1b90

Wypisanie wyniku metody equals zwraca false. Najlepiej odpalić to samemu, zobaczyć na własne oczy i zastanowić się, dlaczego dwa identyczne obiekty zwracają false dla metody equals ? Masz jakiś pomsł? Coś przychodzi Ci do głowy?

Zastanówmy się wspólnie…No właśnie, z punktu widzenia Java te obiektu nie są identyczne. Nie nadpisaliśmy jeszcze metody equals. Podstawowa implementacja tej metody nie zna jeszcze pół składowych klasy, po której dziedziczy i nie jest w stanie ich porównać.

Podstawowa implementacja metody toString() odziedziczonej po klasie Object zwraca pewien adres reprezentujący miejsce w pamięci.
Jak widzimy, dla 2 oddzielnych obiektów to miejsce jest różne. Te klasy wskazują na inne miejsce w pamięci, stad equals() zwraca false. Equals zwróci true w podstawowej implementacji, jeśli będą referencje wskazywały na to samo miejsce w pamięci.

Employee employee1 = employeeRepo.create(FIRST_NAME_TEST, LAST_NAME_TEST, PESEL_TEST + 1, SALARY_TEST);
Employee employee2 = employee1;
System.out.println(employee1.equals(employee2));

true

Jak poprawić defaultową implementację equals oraz hashcode, żeby dla 2 identycznych obiektów zwracała true ? Daj sobie trochę czasu i spróbuj zrobić to samodzielenie. Metodą prób i błędów najszybciej zdobędziesz wiedzę. Poniżej znajdziesz kilka wskazówek.—>Odpal debug, zobacz na własne oczy. W następnym artykule zrobimy to razem.

Metoda Equals-> już znasz zasady jej działania! Teraz czas wykorzystać ją w praktyce!

Wytrwałości w ćwiczeniach!

Zespół GREAT

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Szybki kontakt!
+
Wyślij!