1) Если предикат всегда один и тот же, я бы сделал его членом класса static final
.
2) Существует также версия Iterables.find
, в которой можно указать значение по умолчанию для (при условии, что вы используете Google Guava).Тогда вам вообще не нужно иметь дело с NoSuchElementException
.
3) Есть ли причина привести queue
к Iterable
?Если в этом нет необходимости, не разыгрывайте.
class MyClass {
private static final Predicate STATE_PREDICATE = new Predicate<ITask>() {
@Override
public boolean apply(ITask input) {
// ... your code here
}
};
public ITask getState() {
return Iterables.find(queue, STATE_PREDICATE, null);
}
}