从Java中嵌套的可选元素中取值[duplicate]

v6ylcynt  于 2023-02-02  发布在  Java
关注(0)|答案(2)|浏览(128)
    • 此问题在此处已有答案**:

Mapping a Nested Optional?(2个答案)
2天前关闭。
orderLabel信息出现在一个可选对象中,而该可选对象出现在另一个可选对象下时,是否有更简洁的方法来获取orderLabel信息?

Optional<Order> maybeOrderInfo = getOrderInfo(); // API Call
Optional<String> orderLabel = maybeOrderInfo.isPresent()
  ? maybeOrderInfoPresent
    .get()
    .genericOrderInfo()
    .map(orderInfo -> orderInfo.get("orderLabel"))
    .or(() -> Optional.empty())
  : Optional.empty();
wfveoks0

wfveoks01#

使用Optional#flatMap

Optional<String> orderLabel = getOrderInfo().flatMap(Order::genericOrderInfo)
                               .map(orderInfo -> orderInfo.get("orderLabel"));
ws51t4hk

ws51t4hk2#

使用可选的.ofNullable和flatMap

Optional<Order> maybeOrderInfo = getOrderInfo(); // API Call
Optional<String> orderLabel = maybeOrderInfo.flatMap(Order::genericOrderInfo)
  .flatMap(orderInfo -> Optional.ofNullable(orderInfo.get("orderLabel")));

相关问题