在 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);
我需要获取作为标识符的字符串值,但是这个 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);