如何从 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
如何从方法 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