报错信息如下:
Local variable decimal defined in an enclosing scope must be final or effectively final
原因:在foreach中没有权限将外部变量地址改变。
解决方案:使用变量的Holder
解决前:此时会报错
BigDecimal decimal = BigDecimal.ZERO;
list.forEach(e -> {
decimal = decimal.add(BigDecimal.ZERO);
});
解决后:
BigDecimalHolder decimalHolder = new BigDecimalHolder(BigDecimal.ZERO);
list.forEach(e -> {
decimalHolder.value = decimalHolder.value.add(BigDecimal.ONE);
});