Moje odkazy
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]
Za tento článek zatím nikdo autora nekamenoval