美文网首页
[引]lambda变量为什么是final

[引]lambda变量为什么是final

作者: 李昂的数字之旅 | 来源:发表于2018-06-10 22:53 被阅读0次

Java 8语言上的lambda表达式只实现了capture-by-value,也就是说它捕获的局部变量都会拷贝一份到lambda表达式的实体里,然后在lambda表达式里要变也只能变自己的那份拷贝而无法影响外部原本的变量;但是Java语言的设计者又要挂牌坊不明说自己是capture-by-value,为了以后语言能进一步扩展成支持capture-by-reference留下后路,所以现在干脆不允许向捕获的变量赋值,而且可以捕获的也只有“效果上不可变”(effectively final)的参数/局部变量。

作者:RednaxelaFX
链接:https://www.zhihu.com/question/28190927/answer/39786939

相关文章

网友评论

      本文标题:[引]lambda变量为什么是final

      本文链接:https://www.haomeiwen.com/subject/zqwqeftx.html