如何从 Optional 的 ifPresent 中选择值

fgo*_*lez 1 java optional java-8

如何从方法中选择值ifPresent,因为此方法返回 void?

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

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

Grz*_*rek 5

Optional.ifPresent() 是一个接受消费者的终端方法。消费者是一个函数,需要一些论据和消耗他们,并且没有返回。您可以从作为使用者传递的 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
Run Code Online (Sandbox Code Playgroud)