1、定义
函数式接口就是只定义一个抽象方法的接口。接口现在还可以拥有默认方法(即在类没有对方法进行实现时,其主体为方法提供默认实现的方法)。哪怕有很多默认方法,只要接口只定义了一个抽象方法,它就仍然是一个函数式接口 。
![](https://img.haomeiwen.com/i15608656/1bf14b38966a96b0.png)
2、作用
Lambda表达式允许你直接以内联的形式对函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例。函数式接口也可以用匿名内部类进行实现,Lambda表达式只是一种简便的实现方式。
![](https://img.haomeiwen.com/i15608656/9e363758dc31a8c3.png)
3、函数描述符
函数式接口的抽象方法的签名基本上就是Lambda表达式的签名。我们将这种抽象方法叫作函数描述符。
![](https://img.haomeiwen.com/i15608656/a4b26732dfbd924a.png)
Predicate<T>: 提供一个test方法,它接受泛型T对象,并返回一个布尔类型,
Consumer<T>: 提供一个accept的抽象方法,它接受泛型T的对象,没有返回(void)
Function<T, R>: 提供一个apply的方法,它接受一个泛型T的对象,并返回一个泛型R的对象,可以定义一个
Lambda,将输入对象的信息映射到输出,就可以使用这个接口(比如提取苹果的重量,或把字符串
映射为它的长度)
![](https://img.haomeiwen.com/i15608656/e662da6d1a45d9ad.png)
网友评论