amo Google Guava e lo uso molto, ma c'è un metodo che ho sempre trovato me scrivere ..Perché Iterables.find() in Guava genera NoSuchElementException, invece di restituire null?
public static <T> T tryFind(Iterable<T> iterable, Predicate<T> predicate){
for(T t : iterable){
if(predicate.apply(t)){
return t;
}
}
return null;
}
A me questo sembra essere un accessorio molto utile per Iterables
(anche per Iterators
per quella materia), quindi mi chiedo perché manchi. Inoltre, mentre posso vedere il punto di avere un metodo che genera NoSuchElementException
, forse per distinguere tra ricerca di un nullo e non trovare l'elemento, questa situazione viene solo su se il predicato si sta utilizzando è
public boolean apply(T t){
return t==null;
}
che doesn sembra essere un caso comune.
Quindi, perché i progettisti guava hanno scelto di avere questo comportamento, invece di restituire null se non riesce a trovarlo?
Ecco javadoc per [Iterables.find()] [1]
[1]: http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Iterables.html#find(java.lang.Iterable, com.google.common.base.Predicate)
Forse sarebbe stato meglio lanciare un'eccezione controllata per impedire ai client di dimenticarlo ... – thSoft
Eventuali duplicati di [Iterables.find e Iterators.find - invece di gettare eccezione, ottenere null] (https: //stackoverflow.com/questions/2543052/iterables-find-and-iterators-find-instead-of-throwing-exception-get-null) – Stewart