什么是?(如何使用它?)
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q6463420-0.jpg)
文章插图
1.什么是?
我们知道,对于 Java 变量,我们可以为它分配一个“值” 。
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q6462953-1.jpg)
文章插图
如果您想将“代码块”分配给 Java 变量怎么办?
例如,我想将右边的一段代码分配给一个名为的 Java 变量:
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q64AA1-2.jpg)
文章插图
在 Java 8 之前,这是不可能的 。但是在 Java 8 出现之后,使用特性,你可以做到 。
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q64BB5-3.jpg)
文章插图
当然,这不是一种非常简洁的写法 。所以,为了让这个赋值更有效率,我们可以去掉一些无用的声明 。
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q6461193-4.jpg)
文章插图
通过这种方式,我们成功地非常优雅地将“一段代码”分配给了一个变量 。而“这段代码”,或者“这个函数赋值给一个变量”,就是一个表达式 。
但是这里还有一个问题,变量的类型应该是什么?
在 Java 8 中,所有类型都是一个接口,而表达式本身,“那段代码”,需要是这个接口的一个实现 。这是我认为理解的一个关键点,总之,表达式本身就是一个接口的实现 。直接说这个可能还是有点混乱,所以让我们继续这个例子 。
我们在上面添加一个类型:
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q64BZ0-5.jpg)
文章插图
这种只需要实现一个接口函数的接口类型,我们称之为“函数式接口” 。为了避免后面的人在这个接口上添加接口函数,导致需要实现多个接口函数,成为“非函数式接口”,我们可以给这个添加一个声明@,这样别人就不能再添加新的了 。接口函数为:
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q6464P5-6.jpg)
文章插图
这样,我们就得到了一个完整的表达式声明:
2.表达式有什么作用?
最直观的效果就是让代码极其简洁 。
我们可以比较相同接口的表达式和传统 Java 实现:
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q64BB0-7.jpg)
文章插图
这两种符号本质上是等价的 。但显然,Java 8 的编写方式更加优雅简洁 。而且,由于可以直接赋值给变量,我们可以直接将其作为参数传递给函数,而传统Java必须对接口的实现和初始化有明确的定义:
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q64A027-8.jpg)
文章插图
在某些情况下,这个接口实现只需要使用一次 。传统的 Java 7 必须要求你定义一个“污染环境”的接口实现,而 Java 8 的则干净得多 。
结合Lib、、()等新特性可以让代码更加简洁!推荐:完整的学习指南!
直接上示例 。
假设定义和列表
【什么是 Lambda??该如何使用?】给出了值 。
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q64643a-9.jpg)
文章插图
现在您需要打印出列表中以“Z”开头的所有人员 。
原生态写法:定义两个函数接口,定义一个静态函数,调用静态函数,给参数赋值表达式 。
![什么是 Lambda??该如何使用?](http://img.gansulong.com/220906/1Q6462636-10.jpg)
文章插图
这段代码其实更简洁,但是我们能不能更简洁一点呢?
当然 。在 Java 8 中有一个功能接口包,它定义了大量可能的功能接口 (java.util. ??(Java SE 8)) 。
因此,我们在这里根本不需要定义和这两个函数式接口,我们可以直接使用Java 8 函数式接口包中的和——因为它们的接口定义和/或实际上是相同的 。
- 脑筋急转弯:什么人不用电
- 训狗大小便有什么好方法(训狗大小便有哪些技
- 为什么怀孕没有月经 月经过几天最容易怀孕
- 山楂可以和蜂蜜一起吃吗 食用山楂要注意些什么?
- 竹笋吃多了有什么坏处 竹笋虽好不要贪吃
- 白兰瓜上火吗 吃常吃白兰瓜有什么好处
- 空调逆变器是什么东西?逆变器有什么用途
- 失眠吃什么中药最有效 治疗失眠的十大中药材
- 梦见牙齿掉了是什么意思(周公解梦,最近可能
- 春季吃竹笋要注意什么 吃竹笋有禁忌