foreach无法给外部变量赋值(Local variable decimal defined in an enclosing scope must be final or effectively )

报错信息如下:

  

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);
});

 

你可能感兴趣的:(java基础,java)