【问题标题】:Optional<Function<String, Boolean>> cannot be applied [duplicate]Optional<Function<String, Boolean>> 无法应用 [重复]
【发布时间】:2020-12-09 13:37:03
【问题描述】:

鉴于持有Function&lt;String, Boolean&gt;Optional,我无法通过map/flatMap 将Function 应用到Optional 之外:

Optional<Function<String, Boolean>> optTestFunction = Optional.of(x -> true);
optTestFunction.flatMap(f -> f.apply("Test")).orElse(false);

IDE 和 java 编译器都给我这个错误:

不存在类型变量U 的实例,因此Boolean 符合Optional&lt;? extends U&gt;

老实说,我不明白为什么它不能像这样工作 - 我觉得我错过了一些明显的东西,但由于即使是谷歌也无法帮助我解决这个问题,我希望你能。

【问题讨论】:

    标签: java function lambda optional


    【解决方案1】:

    使用.map(..) 而不是flatMap

    optTestFunction
        .map(f -> f.apply("Test"))
        .orElse(false);
    

    当 map 步骤返回 Optional 时使用 flatMap。这里不是这样。

    【讨论】:

    • 是的,这就是解决方案。我不知道这会很明显 - 非常感谢。
    猜你喜欢
    • 2021-06-05
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多