为什么每次遇到一个java捕获lambda时,如果它只能捕获有效的最终变量,那么它应该被重新评估?

时间:2014-03-25 11:33:43

标签: java-8 lambda

我读到每次遇到捕获lambda时都会对它进行评估。但是,它只能捕获有效的最终变量。那么,重新评估这样一个lambda的需要是什么?

3 个答案:

答案 0 :(得分:0)

有效最终的局部变量意味着该变量的实例不会改变。这并不意味着当你再次运行代码时(例如在函数的另一个运行中,或者包含变量的循环的另一个运行),你有一个该变量的新实例,它将与前一个实例相同变量。

答案 1 :(得分:0)

最终变量将指向同一个对象,但该对象可以在内部更改,因此lambda表达式的结果可能不同。

答案 2 :(得分:-1)

作为示例,变量this实际上是最终的,但this的字段可以更改,因此需要重新评估lambda。每次遇到lambda时,你都不能保证字段(或状态)是相同的。