概念简述
-
Lambda 表达式(lambda expression)是一种
表达式语法
, 注意在java里面, 它不是对象. 以下均是lambda表达式() -> "haha" a -> "hehe"
java 中,
类名::方法名
和对象::方法名
也都是 lambda 表达式 -
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
函数式接口 与 lambda 表达式的关系
lambda表达式
不能直接使用,在使用之前必须初始化
.lambda表达式
必须借助函数式接口
来初始化.lambda表达式
初始化之前什么都不是,初始化之后是一个函数式接口
的实例对象.
1. lambda表达式不能直接使用,在使用之前必须初始化
下面三个lambda表达式 只是一种语法, 你无法确定它们到底是个什么东西.
() -> {
}
() -> "gaga";
String::new;
2. lambda表达式
必须借助函数式接口
来初始化
以 () -> "gaga"
为例, 它是一个lambda表达式, 必须初始化才能使用, 要想初始化, 必须要借助具体的函数式接口.
下面是这个lambda表达式的初始化.
// 被 Supplier 初始化之后, 变成一个 Supplier 实例对象
Supplier<String