我正在尝试将给定产品的所有价格添加为:
BigDecimal getTotalPrice(List<Product> products) {
return products.stream()
.map(Product::getPrice)
.peek(bigDecimal -> System.out.println(bigDecimal))
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
我尝试打印bigDecimal
的所有值,每当我们将值作为null
时,我们就会得到java.lang.NullPointerException
,有没有更好的方法可以通过防止任何类型的异常来添加到java 8
中?
我建议添加中间过滤步骤:
return products.stream()
.filter(Objects::nonNull) // If products can contain null values
.map(Product::getPrice)
.filter(Objects::nonNull) // If price can be null
.peek(bigDecimal -> System.out.println(bigDecimal))
.reduce(BigDecimal.ZERO, BigDecimal::add);