我想知道这种方法是否正确:
public ITask getState()
{
statePredicate[Some predicate definition];
ITask nextRunnable = null;
try {
nextRunnable = Iterables.find((Iterable)queue, statePredicate);
}
catch (NoSuchElementException e)
{}
return nextRunnable;
}
我想知道的要点是:
谓词是否应作为类的成员进行缓存?
我什么都不做,我什至不登录,因为它是
我的应用程序找不到任何东西都是正常的。
返回空值,因为我做了最后的返回。
谢谢您的意见 !
--
最佳答案
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);
}
}