Ich liebe Google Guava und verwenden Sie es viel, aber es ist eine Methode, die ich mir immer das Schreiben finden ..Warum wirft Itererables.find() in Guava NoSuchElementException, anstatt Null zurückgeben?
public static <T> T tryFind(Iterable<T> iterable, Predicate<T> predicate){
for(T t : iterable){
if(predicate.apply(t)){
return t;
}
}
return null;
}
Für mich scheint für diese Angelegenheit zu Iterators
eine sehr sinnvolle Ergänzung zu Iterables
(auch als), ich frage mich, warum es fehlt. Auch während ich den Punkt mit einem Verfahren sehen, die NoSuchElementException
wirft, vielleicht zwischen der Suche nach einem null und nicht finden, das Elemente zu unterscheiden, diese Situation nur kommt, wenn das Prädikat Sie verwenden ist
public boolean apply(T t){
return t==null;
}
die doesn Das scheint kein normaler Fall zu sein.
Warum also haben Guava Designer dieses Verhalten gewählt, anstatt nur null zurück zu geben, wenn es nicht gefunden werden kann? Hier
ist die javadoc für [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)
Vielleicht wäre es besser gewesen, eine geprüfte Ausnahme zu werfen Kunden zu verhindern, dass es zu vergessen ... – thSoft
Mögliche Duplikat [Iterables.find und Iterators.find - statt Ausnahme zu werfen, bekommen null] (https: //stackoverflow.com/questions/2543052/iterables-find-and-iterators-find-instate-of-throwing-exception-get-null) – Stewart