Lambda表达式的简单使用
lambda 表达式三要素:形式参数,箭头,代码块
1、Lambda 表达式的标准格式
格式:
( 形式参数 ) -> { 代码块 }
1 | new Thread(() -> { |
- 形式参数:如果有多个参数,参数之间用逗号隔开。如果没有参数,留空即可
- ->:固定写法
- 代码块:具体要做的内容
2、Lambda 表达式注意事项
- 有一个接口,并且接口中有且仅有一个抽象方法
- 必须要有上下文环境,才能推导出 Lambda 对应的接口(也就是说Lambda表达式不能单独使用)
3、Lambda 表达式实例
3.1 既没有参数也没有返回值的情况
1 | public class lambda01 { |
3.2 有参数,无返回值
1 | public class lambda02 { |
3.3 有参数,有返回值
1 | public class Lambda03 { |
4. Lambda 表达式的省略模式
省略规则:
- 参数类型可以省略,但是又多个参数的情况下,不能只省略一个
- 如果参数有且仅有一个,那么小括号可以省略
- 如果代码块的语句只有一条,那么可以省略大括号和分号
- 如果代码块的语句只有一条,并且这条语句是 return 语句,那么可以省略大括号和分号和return
1 | MyOperate((int a, int b) -> { |
5. Lambda 表达式和匿名内部类的区别
- 所需类型不同
- 匿名内部类:可以是接口,也可以是抽象类,还可以是具体类
- Lambda表达式:只能是接口
- 使用限制不同
- 如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类
- 如果接口中有多于一个的抽象方法,则只能使用匿名内部类
- 实现原理不同
- 匿名内部类:编译之后,产生一个单独的.class 字节码文件
- Lambda 表达式:编译之后,没有一个单独的.class 字节码文件,对应的字节码会在运行的时候动态生成
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 葡萄的个人博客!
评论
GitalkWaline