我正尝试创建从一个POJO功能getValue()
,在这个意义上使用细节阶级的价值观summatory:局部变量必须是最终
@Transient
public BigDecimal getValue() {
BigDecimal sum = new BigDecimal(0);
details.stream().forEach((detail) -> {
sum = sum.add(detail.getValue());
});
return sum;
}
,但我不知道为什么此行sum = sum.add(detail.getValue());
招来这样的错误:
local variables referenced from a lambda expression must be final or effectively final
你能说我什么我'做错了。谢谢。
错误信息使用lambda表达式是相当明确的,如果你想从lambda中访问它,局部变量('sum')必须是'final'。所以你不能像你展示的那样去做,而必须以另一种方式来实现。 –
对,我发布了一个答案,但后来意识到它仍然无法正常工作,因为他试图修改总和。 – Enwired
但是,如果我声明局部变量'sum'就像'final'一样,那么我会得到下一个错误:“无法为最终变量总和赋值” – axiorema