在 java 8 中映射后如何 return 可选值

How to return value of optional after mapping in java 8

我需要获取作为标识符的字符串值,但是这个 return 无效而不是字符串值。 我怎样才能 return 字符串值?

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

您不应该使用 ifPresent,因为您已经发现它 returns 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);