一、Lambda表达式
1.函数式编程思想概述
- 面向对象思想强调“必须通过对象的形式来做事情”
- 函数式思想则是强调“做什么,而不是以什么形式去做”
- Lambda表达式就是函数式思想的体现
2.Lambda表达式
- 组成Lambda表达式的三要素:形式参数、箭头、代码块
- 格式:(形式参数) -> {代码块}
- 如果有多个形式参数,中间用逗号隔开,如果没有形式参数,留空即可
3.Lambda表达式使用前提
- 有一个接口
- 接口中有且仅有一个抽象方法
代码示例:
二、Lambda表达式的练习
1.代码示例:Lambda表达式的带参无返回值
2.代码示例:Lambda的带参数有返回值
3.代码示例:Lambda的无参数有返回值
三、Lambda表达式的省略规则
省略规则:
- 参数的类型可以省略,有多个参数时,参数类型要省略都省略,不能只省略一个
- 如果参数有且仅有一个,小括号可以省略
- 如果代码块(即{})中的语句只有一条,可以省略大括号和分号,甚至是return
四、Lambda表达式与匿名内部类的区别
1.所属类型不同:
- 匿名内部类:可以是接口,可以是抽象类,还可以是具体的类
- Lambda表达式:只能是接口
2.使用限制不同:
- 如果接口中有多个抽象方法,只能使用匿名内部类
- 如果接口中仅有一个抽象方法,可以使用匿名内部类,也可以使用Lambda表达式
3.实现原理不同:
- 匿名内部类:编译之后,产生一个单独的.class字节码文件
- Lambda表达式:编译之后,没有一个单独的字节码文件,对应的字节码文件会在运行时动态生成