1.lambda表达式
1.1简介
- lambda表达式是java8中一个重要的特性,允许通过表达式来代替功能接口。lambda和方法一样,提供了一个正常的参数列表和一个使用这些参数的主体,主体可以是一个表达式或一个代码块)。
- lambda可以看作是一个匿名内部类的语法糖,也可以称为闭包
1.2优点:
- 代码简洁,开发迅速
- 方便函数式编程
- 过滤和计算非常容易
- 改善了集合类的操作
1.3缺点:
- 代码可读性变差
- 不容易进行调试
- 在非并行计算中,一些计算未必有传统的for循环性能高
2.lambda语法
2.1基本语法:
- (parameters)->expression
- (parameters)->{statements;}
2.2组成:
- 由三个部分组成
- parameters:类似方法中的形参列表。这里的参数是接口里的参数,可以明确声明,也可以不声明类型,由JVM进行推断。
- -> 可翻译为"被用于"的意思
- 方法体:可以是表达式,也可以是代码块。代码块可以返回一个值,也可以不返回值,这里的代码块相等于对接口实现的方法体。
3.函数式接口
- 定义:一个接口有且只有一个抽象方法
4.方法引用:
4.1.注意
- 如果lambda表达式体中的功能 有方法已经实现了,则可以使用方法引用lambda表达式体中调用方法的参数列表和返回值类型,要和函数式接口中定义的抽象方法参数列表和返回值一致。
4.2语法格式:
- 静态方法引用: 类名::静态方法名
- 实例方法引用: 实例对象名::实例方法名
- 特殊方法引用: 类名::实例方法名
- 构造方法引用: 类名::new
- 数组引用: 数组类型[]::new
- this和super引用: this::方法名 super::方法名