Eine leere Collection ist eine Collection die kein Element beinhaltet und nicht null. Warum tut man sich also immer wieder so etwas selbst an?
public List getOrders(String customerId){ List<Order> result = null; try{ result = OrderDAO.getOrders(customerId); } catch (InvalidAttributeValueException e){ log.throwing(OrderDAO.class.getName(), "getOrders", e); } return result; }
Eine Collection mit null zu initialisieren bedeutet nur das Problem an eine andere Stelle zu verschieben. Vielleicht nutzt ein Kollege die Methode ohne zu wissen, dass hier null statt einer leeren Collection zurückgegeben werden kann. Im schlimmsten Fall fällt es wärend dem Entwickeln nicht auf und irgendwann kracht es dann fröhlich beim Kunden mit einer NullpointerException.
Abhilfe schafft hier etwas Prävention mithilfe der Collections Klasse. Diese bietet für die drei Hauptgruppen von Collections leere Entsprechungen:
- Collections.EMPTY_LIST;
- Collections.EMPTY_SET;
- Collections.EMPTY_MAP;
und bietet diese typsicher über eine Methode an:
- Collections.emptyList();
- Collections.emptySet();
- Collections.emptyMap();
Und schon ist man auf der sicheren Seite und der Aufrufer braucht nur noch auf den Inhalt zu prüfen.
public List getOrders(String customerId){ List<Order> result = Collections.emptyList(); try{ result = OrderDAO.getOrders(customerId); } catch (InvalidAttributeValueException e){ log.throwing(OrderDAO.class.getName(), "getOrders", e); } return result; }
Achja, Collections bietet noch weitere solcher Hilfsmethoden:
- Collections.emptyListIterator();
- Collections.emptyIterator();
- Collections.emptyEnumeration();
So long, happy No-NullpointerException!
Schreibe einen Kommentar