Lambda表达式

Lambda 表达式

Lambda 表达式支持代码块作为参数。其作用主要是简化匿名内部类的操作(一定情况下(接口中只有一个抽象函数)可以代替匿名内部类)。


Lambda组成部分:

(形参列表)-> {  逻辑语句   }

 

1.形参列表:形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至可以连形参列表的圆括号都不带。

2.箭头(->)。必须通过英文的划线号与大于号组成。

3.代码块。如果代码只包含一条语句,则可以省略花括号{}Lambda代码块只有一条return语句,如果省略 return,它可以自动将这条语句返回。

 

Lambda表达式与函数式接口:

函数式接口:只包含一个抽象方法的接口。 @FunctionalInterface 用来注释函数式接口。

 lambda表达式只能包含一个抽象方法(所实现接口中只有一个抽象方法)

 

Lambda表达式与匿名内部类的联系与区别:


相同点:

1.Lambda表达式与匿名内部类一样,可以直接访问“effectively final的局部变量,以及外部类的成员变量。

2.Lambda表达式创建的对象与匿名内部类生成的对象一样,都可以直接调用从接口中继承的默认方法。

不同点:

1.匿名内部类可以为任意接口创建实例(不管有多少个抽象方法)Lambda表达式只能为函数是接口创建实例。

2.匿名内部类可以为抽象类甚至普通类创建实例,而lambda表达式只能为函数式表达式创建实例。

注意:

Lambda表达式创建的对象与匿名内部类生成的对象一样,都可以直接调用从接口中继承的默认方法。

匿名内部类实现的抽象方法的方法体允许调用接口中的默认方法,但Lambda表达式的代码块不允许调用接口中定义的默认方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值