Baza Wiedzy

Klasa Objects

Java 7 wprowadziła nową klasę o nazwie Objects, która rozwiązuje sporo popularnych problemów, jednak niewiele osób zdaje sobie sprawę z jej istnienia. Jest ona zdefiniowana w pakiecie java.util, więc pełna ścieżka to java.util.Objects.

W klasie zdefiniowanych jest zestaw kilku użytecznych, statycznych metod, które przydadzą nam się m.in. do sprawdzania, czy pole jest nullem, ale także np. do wywoływania metody toString(), czy equals() w bezpieczny sposób.

Kurs Java

Definiując metodę typu:

private boolean compareObjects(Object o1, Object o2) {
     return o1.equals(o2);
 }

pojawia się problem. Co w sytuacji, gdy o1 będzie nullem? Otrzymamy wyjątek NullPointerException. Możemy pozbyć się problemu dodając warunek if:

public boolean compareObjects(Object o1, Object o2) {
     if(o1 != null)
         return o1.equals(o2);
     else
         return false;
 }

Problem ten jest jednak na tyle powtarzalny, że najczęściej radzono sobie z nim korzystając z biblioteki apache commons, konkretnie metody equals klasy ObjectUtils. Jak możemy jednak przeczytać w dokumentacji metoda ta jest odradzana od Javy 7, gdzie została zastąpiona przez metodę o tej samej nazwie, ale z klasy Objects ze standardowej biblioteki Javy właśnie.

Poprawiona metoda powinna wyglądać więc następująco:

public boolean compareObjects(Object o1, Object o2) {
     return Objects.equals(o1, o2);
 }

W podobny sposób rozwiązany został podobny problem dla metody toString(). Gdy nie mamy pewności, czy obiekt, na którym wywołujemy metodę toString() nie jest nullem, bezpieczniej jest posłużyć się metodą Objects.toString(), która w przypadku wartości null po prostu ją zwróci, zamiast rzucać NullPointerException.

public void safePrint(Object o) {
     System.out.println(Objects.toString(o));
 }

Do najprzydatniejszych metod w tej klasie należą jeszcze:

    • deepEquals()
    • compare()
    • hashCode()

    Najlepszy newsletter o Javie w Polsce

    Czy chcesz otrzymywać nowości ze świata Javy oraz przykładowe pytania rekrutacyjne? Zapisz się na newsletter i bądź na bieżąco! Otrzymasz także ekskluzywne materiały oraz informacje o nowych kursach i promocjach.

    Nikomu nie udostępniamy Twojego maila, a jeśli zechcesz to w każdej chwili możesz się wypisać.

    Komentarze do artykułu

    Wyłączyliśmy możliwość dodawania komentarzy. Poniżej znajdziesz archiwalne wpisy z czasów gdy strona była jeszcze hobbystycznym blogiem. Zapraszamy natomiast do zadawnia pytań i dyskusji na naszej grupe na facebooku.