如何从 Optional 的 ifPresent 中选取值

How to pick the value from ifPresent of Optional

如何从方法 ifPresent 中选取值,因为此方法 returns 无效?

我要应用的逻辑是:如果对象deliveryInfo不是null,取交货数量并设置到对象dto,但是使用Optional,没有任何空检查。

Optional<TT021DeliveryCodingContainerDto> deliveryInfo =
    tt021OrderingBusinessHandler
        .getDeliveryCodingContainersByDeliveryAndOrderDetail(
            delivery.getId(), position.getOrderDetails().getId());
deliveryInfo.ifPresent(TT021DeliveryCodingContainerDto::getDeliveredQuantity);
dto.setQuantityDelivered(deliveredQuantity);

类似于 deliveryInfo.ifPresent(i -> dto.setQuantityDelivered(i.getDeliveredQuantity());?

如果你想return方法中的东西,使用map而不是ifPresent;这将 return 另一个 Optional 包装结果(如果有的话)。

Optional.ifPresent() 是一个接受消费者的终端方法。 Consumer 是一个函数,它接受一些参数并且 消耗 它们并且 returns 什么都不消耗。您可以从作为使用者传递的 lambda 表达式中使用的参数中选取值。

Optional<TT021DeliveryCodingContainerDto> deliveryInfo =
tt021OrderingBusinessHandler
    .getDeliveryCodingContainersByDeliveryAndOrderDetail(
        delivery.getId(), position.getOrderDetails().getId());

deliveryInfo.map(info -> info.getDeliveredQuantity())
.ifPresent(quantity -> dto.setQuantityDelivered(quantity); // you can replace those with method references