【发布时间】:2015-06-29 20:39:18
【问题描述】:
我在以下代码中有一个不兼容的边界错误:
Predicate<Integer> pred;
Iterator<Integer> daysToRunIter = Iterators.cycle(daysToRunInt);
if(nowHourOfDay >= schedule.getHourOfDay()){
pred = val -> val > currDayOfWeek;
} else {
pred = val -> val == currDayOfWeek;
}
Iterator<Integer> subset = Iterators.find(daysToRunIter,pred); //ERROR
我得到的错误:
看起来我提供了兼容类型Integer,为什么会出现此错误,我该如何解决?
【问题讨论】:
-
如文档所述,
find从Iterator<T>返回类型为T的元素(“返回迭代器中满足给定谓词的第一个元素” )。所以subset应该是Integer我猜... -
您确定该元素存在吗?尝试在 find 方法调用中添加一个默认值作为第三个参数。类似
Iterators.find(daysToRunIter,pred, 1); -
@AlexisC。谢谢,这确实解决了!我会将此作为答案并感谢您。
-
@OlivierPoulin 谢谢,我实际上打算从番石榴中尝试 tryFind() 而不仅仅是 find()
-
请不要贴错误信息截图;它们很难阅读,搜索引擎也看不到它们,这意味着有相同错误的其他人无法通过搜索错误文本找到此问题。
标签: java generics java-8 guava predicate