聊一下lambda表达式四大函数接口
lambda表达式
主要以functionInterface 注解。 成为函数式 接口。
方法可以是有参数。参数类型可以不用写, 编译器会自行推算
可以是无参数。
但是只能有一个方法。 jdk 1.8以后 可以有 default修饰的方法
主要的四大函数 接口
1.Consumer 类
我们来看下 源码
clipboard.png
accept 方法 是没有返回值的, 该方法对传入的单个参数进行 操作。然后输出
andThen 这是一个用来做链式处理的方法,该方法返回的是一个Consumer对象,假设调用者的Consumer对象为A,输入参数Consumer对象设为B,那么返回的Consumer对象C的accept方法的执行体就是A.accept()+B.accept()
accept方法
示例:
[图片上传失败...(image-b88e97-1542177346379)]
andThen方法示例
[图片上传失败...(image-74ad67-1542177346379)]
2.Supplier<T> 类
[图片上传失败...(image-9d02bd-1542177346379)]
该类 没有参数。 返回值是T
作用, 可以当作工厂类来调用。
示例:
[图片上传失败...(image-448ff0-1542177346379)]
这里T 必须要有构造器
Function<T,R>接口
image.png
[图片上传失败...(image-d3e991-1542177346379)]
[图片上传失败...(image-fc40f7-1542177346379)]
[图片上传失败...(image-81f5b3-1542177346379)]
T作为输入, 返回值是R
apply方法
[图片上传失败...(image-b8a905-1542177346379)]
对单个对象的处理。儿具体的处理逻辑是在调用传入,即传入传递的是一种操作。
andThen 方法
其实跟上面 Consumer里面的方法是一样的, 就是在 apply方法之后 再进行apply。
例如:
[图片上传失败...(image-8803de-1542177346379)]
compose方法是先进行func2的操作, 再进行func里面的操作。与andThen 方法正好是相反的。
Predicate接口
java8源码如下:
[图片上传失败...(image-b08353-1542177346378)]
test()方法传入值的进行判断, 返回的是boolean类型。 可以理解为 是处理参数T,满足什么条件。
and ()方法 这里是对传入的值进行第二次判断,调用当前的Predicate的test方法, 再调用 otherd test
方法。 可以理解为, 条件A&&条件B。
negate()方法。 对当前test()判断的 进行 "!"操作。如 !条件A,这样的。
isEqual() 方法 就是对参入参数 进行判断 等于当前条件的。如A==B 这样的。