Lambda表达式基础(9)- lambda表达式可以使用来自它们的环境变量吗?

lambda表达式可以使用来自它们的环境变量吗?
是的。这就是所谓的变量捕获。实例和静态变量可以不受限制地在lambda的主体被使用和改变。尽管如此,使用局部变量有更多的限制:局部变量不允许捕获除非他们确定是final的,这是在Java8中引入的一个概念。通俗地说,一个局部变量确定是final的,如果它的其初始值永远不会改变(包括lambda表达式主体内),换句话说,它声明为final将不会导致编译失败。确定的final的概念,在Java中并没有引入任何新的语义,它只是定义final变量的一个稍微不那么冗长的方式。需要捕获的局部变量是有效的final的原理阐述在这里(http://www.lambdafaq.org/what-are-the-reasons-for-the-restriction-to-effective-immutability/)。

原文链接:http://www.lambdafaq.org/can-lambda-expressions-use-variables-from-their-environment/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值