【发布时间】:2015-04-22 08:15:36
【问题描述】:
我如何从方法ifPresent 中选择值,因为此方法返回 void?
我要应用的逻辑是:如果对象deliveryInfo不是null,则取交货数量并将其设置到对象dto中,但使用Optional,不做任何空检查。
Optional<TT021DeliveryCodingContainerDto> deliveryInfo =
tt021OrderingBusinessHandler
.getDeliveryCodingContainersByDeliveryAndOrderDetail(
delivery.getId(), position.getOrderDetails().getId());
deliveryInfo.ifPresent(TT021DeliveryCodingContainerDto::getDeliveredQuantity);
dto.setQuantityDelivered(deliveredQuantity);
【问题讨论】:
-
getDeliveryCodingContainersByDeliveryAndOrderDetail。嗯,这是一个方法名。您可以查看orElse()、orElseGet()、orElseThrow()。或使用if(opt.isPresent()){T val = opt.get(); //do something with val} -
什么是
deliveredQuantity?你能展示你如何做到这一点没有可选? -
如果我这样做 if(opt.isPresent()){T val=opt.get()},我看不出这种方法对使用普通空值检查有什么好处
-
Optional不会让你的代码更干净,它是一种与旧代码一起使用的技巧。为了让你的代码对新代码更干净,不要在任何地方允许null!