Dobre praktyki programistyczne

Nowa klasa java.util.Objects pomoże w codziennym programowaniu

25.07.2011

Zbliża się Java 7, warto więc zobaczyć, jak nowa wersja pomoże w tworzeniu przejrzystszego kodu. W tym poście zaprezentuję proste, ale bardzo użyteczne metody klasy java.util.Objects. Wszystkie jej metody są statyczne, więc nie musisz tworzyć żadnej nowej instancji. Używając ich można zredukować liczbę instrukcji „if” czy operatorów warunkowych. Poniżej są przykłady starego i nowego kodu.

Pierwsza metoda sprawdza, czy obiekt ma wartość null. Najczęściej będzie używana podczas walidacji argumentów metod.

  1. void oldNullCheck(Object o) {
  2. if (o == null) {
  3. throw new NullPointerException("Object must not be null");
  4. }
  5. }
  6.  
  7. void newNullCheck(Object o) {
  8. Objects.requireNonNull(o, "Object must not be null");
  9. }

Następna metoda pomoże, jeśli chcemy uzyskać obiekt jako String, ale nie jesteśmy pewni czy to nie jest null.
  1. String oldToString(Object o) {
  2. return (o == null) ? "NULL" : o.toString();
  3. }
  4.  
  5. String newToString(Object o) {
  6. return Objects.toString(o, "NULL");
  7. }

Ostatnia metoda podobna jest do powyższej ale dla pobierania kodu mieszającego. Może być przydatna podczas pisania własnej metody hashCode.
  1. int oldHashCode(Object o) {
  2. return (o == null) ? 0 : o.hashCode();
  3. }
  4.  
  5. int newHashCode(Object o) {
  6. return Objects.hashCode(o);
  7. }

Powysze metody pozwolą na lepszą obsługę zmiennych, które mogą przybierać wartość null. Mam nadzieję, że użycie tej klasy przyczyni się do spadku liczy nieoczekiwanych wystąpień NullPointerException.

To nie są wszystkie metody. Warto jeszcze zobaczyć klasę Objects w dokumentacji.

Leave a Response