聊一下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

[图片上传失败...(image-9d02bd-1542177346379)]

该类 没有参数。 返回值是T

作用, 可以当作工厂类来调用。

示例:

[图片上传失败...(image-448ff0-1542177346379)]

这里T 必须要有构造器

Function接口


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 这样的。

参考链接:https://www.jianshu.com/p/0746aaf5f955

https://www.jianshu.com/p/b38ff80e3039

你可能感兴趣的:(聊一下lambda表达式四大函数接口)