python也接触过lambda表达式,这里是一种函数式编程思想,通过输入获得输出
我们之前实现多线程,可以新建Thread子类实现run方法,也可以重写Runnable实现类,复写run方法,然后实例传给Thread去初始化,也可以在main中使用匿名内部类new Runnable(){..}里面复写run方法,但其实我们比较关心的就是这个run怎么写
jdk1.8以后引入了lambda表达式
![](https://img.haomeiwen.com/i16668075/84d652af522ec7c6.png)
我们如上就是lambda表达式的体现,是不是感觉省了很多代码,使用匿名,同时直接在实例时,参数使用()->{代码块}直接实现run功能
lambda表达式格式
(参数列表)->{重写接口代码块} 当没有参数,参数列表为空,如上图的代码
![](https://img.haomeiwen.com/i16668075/731c85cf3563020d.png)
我们需要编写一个接口,因为lambda表达式必须是重写接口的代码(觉得这个限制不如Python灵活)
![](https://img.haomeiwen.com/i16668075/0918b0a7d8f8358e.png)
定义主类定义某一方法区调用接口,并在main里重写代码,如上,我们可以灵活控制其计算类型
lambda表达式精简写法
之前我们说了Lambda表达式的常规写法,现在我们介绍精简写法
1.参数列表的数据类型可以省略不写
2如果参数只有1个,那参数和类型都可以不写
3如果{}代码只有一行,可以省略{},有返回值可以省略return分号,这几个必须一起省略
![](https://img.haomeiwen.com/i16668075/da571202aa349a11.png)
如上,我们把参数类型省略,同时省略return,{},分号
![](https://img.haomeiwen.com/i16668075/38ffc8f7c6bbfdb4.png)
如上,无参的lambda省略
lambda表达式注意事项
1 必须是有接口,而且接口有且只有一个抽象方法
2使用lambda表达式必须有上下文推断,可以保证我们输入参数类型(虽然我们可以省略表达式类型),如图4
网友评论