如何从方法ifPresent
中选择值,因为此方法返回void?
我想要应用的逻辑是:如果对象deliveryInfo
不是null
,请获取投放数量并将其设置为对象dto
,但使用可选,不带任何空检查。
Optional<TT021DeliveryCodingContainerDto> deliveryInfo =
tt021OrderingBusinessHandler
.getDeliveryCodingContainersByDeliveryAndOrderDetail(
delivery.getId(), position.getOrderDetails().getId());
deliveryInfo.ifPresent(TT021DeliveryCodingContainerDto::getDeliveredQuantity);
dto.setQuantityDelivered(deliveredQuantity);
答案 0 :(得分:4)
Optional.ifPresent()是一个接受Consumer的终端方法。消费者是一个函数,它接受一些参数并且消费它们并且什么也不返回。您可以从作为使用者传递的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
答案 1 :(得分:2)
像deliveryInfo.ifPresent(i -> dto.setQuantityDelivered(i.getDeliveredQuantity());
?
如果您想从方法中返回一些内容,请使用map
代替ifPresent
;这将返回另一个Optional包装结果(如果有的话)。