2024 / 7 / 21
Optional.ofNullable(req.getInsuranceGoodsInfo()) .map(InsuranceGoodsInfo::getGoodTotalPrice) .ifPresent(totalFee::add);
1. Optional.ofNullable(req.getInsuranceGoodsInfo()):
• Optional 是一个用于处理可能为 null 的对象的容器类,提供了一种优雅的方式来避免空指针异常(NullPointerException)。
• ofNullable 方法接收一个可能为空的值。如果 req.getInsuranceGoodsInfo() 返回 null,它将创建一个空的 Optional 对象;如果不为 null,它将创建一个包含该值的 Optional 对象。
2. .map(InsuranceGoodsInfo::getGoodTotalPrice):
• map 方法用于对 Optional 中包含的值进行转换。
• InsuranceGoodsInfo::getGoodTotalPrice 是一个方法引用,它相当于一个 Lambda 表达式 info -> info.getGoodTotalPrice()。这意味着它将对 InsuranceGoodsInfo 对象调用 getGoodTotalPrice 方法,并返回 BigDecimal 类型的总价。
• 如果 Optional 中包含值,map 方法会将该值(InsuranceGoodsInfo 对象)转换为另一个值(BigDecimal),并返回包含转换后值的新的 Optional 对象;如果原 Optional 为空,map 方法直接返回一个空的 Optional 对象。
3. .ifPresent(totalFee::add):
• ifPresent 方法接收一个 Consumer(这里是 totalFee::add),当 Optional 中包含值时,执行该 Consumer 操作。
• totalFee::add 是一个方法引用,相当于一个 Lambda 表达式 fee -> totalFee.add(fee)。这意味着如果 Optional 中有 BigDecimal 值,它将调用 totalFee.add(fee) 方法,将该值添加到 totalFee 中。