FK~

Moje odkazy

Ostatní odkazy

Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
There Is No Cloud …just other people's computers.
Sane software manifesto / Manifest příčetného softwaru

Procházení kolekce a null v Javě

vydáno: 19. 8. 2009 22:33, aktualizováno: 6. 1. 2014 12:19

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 :-).

Témata: [softwarové inženýrství] [Java]

Komentáře čtenářů

Tento článek zatím nikdo nekomentoval

Přidat komentář

reagujete na jiný komentář (zrušit)
jméno nebo přezdívka
název příspěvku
webová stránka, blog
e-mailová adresa
nápověda: možnosti formátování
ochrana proti spamu a špatným trollům

Náhled komentáře