【问题标题】:How to return value of optional after mapping in java 8java 8中映射后如何返回可选值
【发布时间】:2021-01-19 12:01:00
【问题描述】:

我需要获取作为标识符的字符串值,但这会返回 void 而不是字符串值。 如何返回字符串值?

    String previousReadyForHome = information.getPreviousContact().ifPresent(val->{
      Arrays.stream(val.basic.identifiers).filter(s -> s.type == readyForHomeType)
        .map(s -> s.identifier).findFirst().orElse(null);
    });

【问题讨论】:

  • 不要做ifPresent。但.map.flatMap 在给定的Optional 上。

标签: java string lambda java-8 optional


【解决方案1】:

你不应该使用ifPresent,正如你所发现的,它返回void。相反,您应该使用flatMap,它会为您提供另一个Optional<String>,然后您可以使用orElse 将其解包为null

String previousReadyForHome = information.getPreviousContact().flatMap(val->
  Arrays.stream(val.basic.identifiers).filter(s -> s.type == readyForHomeType)
    .map(s -> s.identifier).findFirst()
).orElse(null);

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2019-10-22
    • 2017-11-26
    • 1970-01-01
    相关资源
    最近更新 更多