【问题标题】:Incompatible bounds error: Java Predicate generics不兼容的边界错误:Java 谓词泛型
【发布时间】: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,为什么会出现此错误,我该如何解决?

【问题讨论】:

  • 如文档所述,findIterator&lt;T&gt; 返回类型为 T 的元素(“返回迭代器中满足给定谓词的第一个元素” )。所以subset 应该是Integer 我猜...
  • 您确定该元素存在吗?尝试在 find 方法调用中添加一个默认值作为第三个参数。类似Iterators.find(daysToRunIter,pred, 1);
  • @AlexisC。谢谢,这确实解决了!我会将此作为答案并感谢您。
  • @OlivierPoulin 谢谢,我实际上打算从番石榴中尝试 tryFind() 而不仅仅是 find()
  • 请不要贴错误信息截图;它们很难阅读,搜索引擎也看不到它们,这意味着有相同错误的其他人无法通过搜索错误文本找到此问题。

标签: java generics java-8 guava predicate


【解决方案1】:
Integer subset = Iterators.find(daysToRunIter,pred);

解决了错误。

归功于@AlexisC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-18
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多