本文主要是介绍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);
});
这篇关于foreach无法给外部变量赋值(Local variable decimal defined in an enclosing scope must be final or effectively )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!