【问题标题】:java 8 lambda Optional.ofNullablejava 8 lambda Optional.ofNullable
【发布时间】:2018-07-02 19:44:29
【问题描述】:

我的方法返回:

return Optional.ofNullable(solution)
            .map(Solution::getPrice)
            .map(solutionPrice-> BuildPayment(solutionPrice, name))
            .orElse(Mono.just(Price.Builder.create().build()))
            .map(price-> buildProcessResponse(solution, price));

当解决方案为空时,我的方法失败。当我调试时,似乎当解决方案为空时,该方法转到 orElse 并输入最终地图。

如果它为空,我应该如何初始化“解决方案”?

【问题讨论】:

  • 似乎当解决方案为 null 时,该方法转到 orElse 并输入最终地图 - 这正是呈现的代码中应该发生的情况。你真正想要达到什么目的?如果solutionnull 会发生什么?
  • 为什么要混合可选和单声道?
  • Mono.justOrEmpty(solution).map(...).map(...).or(Mono.just(...)).map(...)
  • @lexicore 如果解决方案为空,我想用新的解决方案调用 buildProcessResponse

标签: java lambda java-8 optional


【解决方案1】:

从您的代码中,很难弄清楚您的代码的最终目的是什么。为了在它为空时创建一个新的解决方案,以下 sn-p 可能会有所帮助:

    return Optional.ofNullable(solution)
            .orElseGet(Solution::new)
            .map(solution -> buildProcessResponse(solution, solution.getPrice()));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多