java8【Lamabda】

6 篇文章 0 订阅

java8引入Lamabda表达式,目前我个人认为就是为了简化代码,使得逻辑更加的清晰。

理论上,java8之前不能解决的,使用Lamabda也不能解决。

Lamabda会根据赋值的上下文、方法调用的上下文和类型转换的上下文中获得目标类型。(这里的上下文指的是参数和返回值)。

语法

基本语法:

(parameters)-> expression

(parameters)-> {statements;}

表达式不需要花括号,语句需要花括号,并且还有分号。

局部变量限制

这里的限制也和匿名方法使用局部变量一样,必须要求其被final修饰。

为什么呢?

第一、实例变量和局部变量背后的实现有一个关键不同。实例变量都存储在堆中,而局部变量则是存储在栈中。如果Lamabda可以直接访问局部变量,而且Lamabda是在一个线程(我们暂时叫为线程A)中使用的,那么使用Lamabda的线程(也就是线程A),可能会在分配该变量的线程(我们暂时叫线程B)将这个变量收回之后,去访问该变量。因此,Java在访问自由局部变量时,实际上是在访问它的副本,而不是访问原始变量。如果局部变量仅仅赋值一次的话,那就没有什么区别啦!——–所以有了这样的限制。这个和匿名方法是一样的。

第二、这一限制不鼓励你使用改变外部变量的典型命令式编程模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值