理解JAVA 8的Lambda表达式
来源:互联网 发布:11年总决赛司机数据 编辑:程序博客网 时间:2024/05/03 20:59
JAVA 8 新特性, Lambda表达式, 函数式编程,听着很高大上的感觉,今天花了一点时间学习了一下,把要点记录下来。
Lambda表达式总的来说还是个语法糖,本质可以理解成对匿名内部类的简写,而且只能用于只有一个抽象方法的匿名内部类。看下面的代码:
首先定义一个接口:
注意这个接口有一个注解@FunctionalInterface,这个注解没什么卵用,就是个编译检查,保证你的接口里面有且只有一个抽象函数,否则就会报错来提醒你
那么针对这个接口看看这分别用匿名内部类和Lambda表达式的方式来实现,看这段代码:
上面是用匿名内部类实现,下面使用Lambda表达式实现,是不是代码简洁了很多,这是最简洁的方式,没有入参,所以 "->"的左边的圆括号里什么都没有,"->"的右边没有花括号,只有一个0,就等同于{return 0;}
下面的代码再演示有参数的情况,先看接口的代码:
然后是Lambda表达式来实现:
注意到Lambda表达式的参数是不需要定义类型的,因为我们在接口中已经定义了,编译器会自己判断。
最后来个完整版的,既有参数,接口实现也不止一句。接口类:
说了这么多,这个语法糖最有用的地方当然是Java本身那些函数式接口了,就是那些只有一个方法的接口,最容易想到的就是Runnable,看下这个类在Java 8里面的定义:
已经被加上@FunctionalInterface注解了,用Lambda表达式实现一个:
还有个比较好用的就是遍历List:
这里的each表示List里面的每个元素。
还有一种Lambda,就是"::",这个个人认为没太大价值了,语义表达得不好,规则也不太简单。
功能跟前一段代码一样,第一眼看过去是不是更晕,喜欢写这种代码的任多半有怪癖
这就是对Lambda表达式的学习。
- 理解JAVA 8的Lambda表达式
- 深入浅出理解JAVA 8 Lambda表达式 Stream
- Java 8 lambda表达式
- Java 8 Lambda表达式
- Java 8 lambda表达式
- Java 8 Lambda 表达式
- Java 8 Lambda表达式
- Java 8 Lambda 表达式
- Java 8 Lambda表达式
- Java 8 Lambda 表达式
- Java 8 Lambda 表达式
- Java 8 Lambda表达式
- Java 8---Lambda表达式
- Java 8 lambda表达式
- 【Java 8】Lambda 表达式
- Java 8新增的Lambda表达式
- java 8 lambda 表达式的优缺点总结
- 理解Java 8 Lambda
- 代码片段——弹出提示框
- Java注解教程及自定义注解
- 合并排序
- linux-搭建ftp服务器相关
- C++封装链式表-链表
- 理解JAVA 8的Lambda表达式
- Part6 继承与OOD Inheritance and Object-Oriented Design(二)
- 2016sdau课程练习专题四 1001
- UIPageController和UIScrollView结合使用
- 欢迎使用CSDN-markdown编辑器
- 逻辑斯蒂回归(Logistic Regression)
- 计算机原理(二)
- 在FireMonkey iOS应用程序中使用ListBox组件来显示TableView
- 线性表基础认识