我试图将给定产品的所有价格加起来如下:
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中添加?
发布于 2020-11-19 08:52:16
我建议增加中间过滤步骤:
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);https://stackoverflow.com/questions/64908251
复制相似问题