1.函数式接口
1.1函数式接口概述
函数式接口: 有且仅有一个抽象方法的接口
Java中函数式编程体现就是Lambda表达式,所以函数式接口就是可以适用于Lambda使用的接口
只有确保接口有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导
如何检测一个接口是不是函数式接口呢?
@FunctionalInterface
放在接口定义的上方: 如果接口是函数式皆苦,编译通过;如果不是,编译失败
注意
我们自己定义函数式接口的时候,@FunctionalInterface是可选的,就算我不写这个注解,只要保证满足函数式接口定义的条件,也照样是函数式接口。但是,建议加上该注解
1.2函数式接口作为方法的参数
如果方法的参数是一个函数式接口,我们可以使用Lambda表达式作为参数传递
1.3函数式接口作为方法的返回值
如果方法的返回值是一个函数式接口,我们可以使用Lambda表达式作为结果返回
1.4常用的函数式接口
Java 8在java.util.function包下预定义了大量的函数式接口供我们使用
我们重点来学习下面的4个接口
Supplier接口
Consumer接口
Predicate接口
Function接口
1.5Supplier接口
Supplier<T>: 包含一个无参的方法
T get(): 获得结果
该方法不需要参数,它会按照某种实现逻辑(由Lambda表达式实现)返回一个数据