Pozor museum: Toto je archivní verze blogu. Pro vkládání komentářů přejděte na tento článek v nové verzi blogu.

Procházení kolekce a null v Javě

Pravděpodobně už jste narazili na nutnost ošetřovat různé nestandardní případy, např. když vaší metodě někdo podstrčí jako parametr null.

Mějme tento kód:

Collection<String> kolekce = …;
for (String s : kolekce) {
    System.out.println(s);
}

Co když ale kolekce bude null? S tímto případem musíme počítat, jinak nás čeká nepříjemná NullPointerException. Měli bychom tedy kód obalit try { … } catch (NullPointerException e) { … } nebo if (kolekce != null) { … }.

Asi si řeknete, že je to pěkná otrava a že by bylo lepší, kdyby se cyklus for choval k null kolekci stejně jako k prázdné kolekci (tzn. neproběhne ani jedna iterace, ale nedojde k chybě). Takový cyklus v Javě sice nemáme, ale řešení je poměrně jednoduché.

Vytvoříme si pomocnou metodu (funkci):

public static <T> Collection<T> notNull(Collection<T> kolekce) {
	if (kolekce == null) {
	    return Collections.emptyList();
	} else {
	    return kolekce;
	}
}

A cyklus budeme procházet tímto způsobem:

for (String s : notNull(kolekce)) {
    System.out.println(s);
}

Díky generické metodě notNull() jsme dosáhli požadovaného chování a ani nebylo potřeba upravovat jazyk nebo do něj zanášet makra a podobné hrůzy :-).

Průměr: 2.7 (3 hlasů)