NullpointerException vermeiden – Java Tips

NullpointerExceptions vermeiden mithilfe leerer Collections. Die Klasse Collections bietet alles was man dafür braucht, auch type-safe.


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!

Ähnliche Artikel:

Autor: Thomas Pummer

Thomas Pummer ist Softwareentwickler an der Universität Wien. In seiner Freizeit betreut er das Open Source Projekt TrayRSS und werkt an diversen anderen kleinen Projekten. Er ist sehr interessiert an Open Source und Webentwicklung und testet gern neue Programmiersprachen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*