JDK8新特性之Lambda表达式

Lambda表达式

原因:匿名内部类语法是冗余的

体现的是函数式编程思想,只需要将实现的代码放到函数中

Lambda是一个匿名函数,只需要将要执行的代码放到表达式中即可

语法:
(参数类型 参数名称) ->{
​	代码体;
}
格式说明:

​ (参数类型 参数名称):参数列表

​ {代码体;}方法体

​ ->箭头 分割参数列表和方法体,没有实际含义

匿名内部类会在编译时生成一个class文件

lambda在程序运行时会生成一个类

1.在类中新增一个方法,方法体就是lambda表达式的代码

2.还会形成一个匿名内部类,实现接口,重写抽象方法

3.在接口的重写方法中会调用新生成的方法

省略格式

参数类型可以省略

小括号内有且仅有一个参数,小括号可以省略

如果大括号内有且仅有一条语句,可以同时省略大括号,return以及分号

栗子
(int a) ->{
	return new Person();
}

省略后:

a -> new Person()
前提条件

1.方法的参数或局部变量类型必须为借口才能使用Lambda表达式

2.接口中有且仅有一个抽象方法

Lambda表达式和匿名内部类的对比

1.所需的类型不一致

匿名内部类需要的类型可以是类、抽象类、接口

Lambda需要的接口必须是接口

2.抽象方法的数量不一致

匿名内部类所需的接口中抽象方法的数量随意

Lambda需要的方法只能为一个

3.实现原理不一致

匿名内部类会在编译后生成class文件

Lambda表达式是在程序运行时动态生成class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值