概述内置的函数式接口
注意:这里只讨论
java.util.function
包中的函数式接口。java.lang.Runnable
也是函数式接口,但不在讨论范围内
java在java.util.function
包下提供了很多函数式接口,其中最核心的函数式接口分别是:
- 消费型:Consumer
- 供给型:Supplier
- 函数型:Function
- 断言型:Predicate
其它函数式接口都可以参照这几个接口进行拓展,拓展方式表现在:
- 增加入参个数
- 指定入参的数据类型
- 指定返回结果的数据类型
- 基于函数型接口设计思想增加多元运算能力
提示:只要掌握了这几个核心的函数式接口,也就很容易理解其它内置的函数式接口了,也可以定义自己的函数式接口
内置的四大核心函数式接口
函数式接口 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
Consumer<T> | T | void | 对类型为 T 参数应用操作 |
Supplier<T> | T | 返回 T 类型的结果 | |
Function<T, R> | T | R | 对类型为 T 参数应用操作,返回 R 类型的结果 |
Predicate<T> | T | boolean | 对类型为 T 参数应用操作,返回 boolean 类型的结果 |
内置的其它函数式接口
Consumer 变种
函数式接口 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
IntConsumer | int | void | 对类型为 int 参数应用操作 |
LongConsumer | long | void | 对类型为 long 参数应用操作 |
DoubleConsumer | double | void | 对类型为 double 参数应用操作 |
BiConsumer<T, U> | T, U | void | 对类型为 T, U 参数应用操作 |
ObjIntConsumer<T> | T,int | void | 对类型为 T,int 参数应用操作 |
ObjLongConsumer<T> | T,long | void | 对类型为 T,long 参数应用操作 |
ObjDoubleConsumer<T> | T,double | void | 对类型为 T,double 参数应用操作 |
Supplier 变种
函数式接口 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
IntSupplier | int | 返回 int 类型的结果 | |
LongSupplier | long | 返回 long 类型的结果 | |
DoubleSupplier | double | 返回 double 类型的结果 | |
BooleanSupplier | boolean | 返回 boolean 类型的结果 |
Function 变种
函数式接口 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
ToIntFunction<T> | T | int | 对类型为 T 参数应用操作,返回 int 类型的结果 |
ToLongFunction<T> | T | long | 对类型为 T 参数应用操作,返回 long 类型的结果 |
ToDoubleFunction<T> | T | double | 对类型为 T 参数应用操作,返回 double 类型的结果 |
IntFunction<R> | int | R | 对类型为 int 参数应用操作,返回 R 类型的结果 |
IntToLongFunction | int | long | 对类型为 int 参数应用操作,返回 long 类型的结果 |
IntToDoubleFunction | int | double | 对类型为 int 参数应用操作,返回 double 类型的结果 |
LongFunction<R> | long | R | 对类型为 long 参数应用操作,返回 R 类型的结果 |
LongToIntFunction | long | int | 对类型为 long 参数应用操作,返回 int 类型的结果 |
LongToDoubleFunction | long | double | 对类型为 long 参数应用操作,返回 double 类型的结果 |
DoubleFunction<R> | double | R | 对类型为 double 参数应用操作,返回 R 类型的结果 |
DoubleToIntFunction | double | int | 对类型为 double 参数应用操作,返回 int 类型的结果 |
DoubleToLongFunction | double | long | 对类型为 double 参数应用操作,返回 long 类型的结果 |
BiFunction<T, U, R> | T, U | R | 对类型为 T, U 参数应用操作,返回 R 类型的结果 |
ToIntBiFunction<T, U> | T, U | int | 对类型为 T, U 参数应用操作,返回 int 类型的结果 |
ToLongBiFunction<T, U> | T, U | long | 对类型为 T, U 参数应用操作,返回 long 类型的结果 |
ToDoubleBiFunction<T, U> | T, U | double | 对类型为 T, U 参数应用操作,返回 double 类型的结果 |
Predicate 变种
函数式接口 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
IntPredicate | int | boolean | 对类型为 int 参数应用操作,返回 boolean 类型的结果 |
LongPredicate | long | boolean | 对类型为 long 参数应用操作,返回 boolean 类型的结果 |
DoublePredicate | double | boolean | 对类型为 double 参数应用操作,返回 boolean 类型的结果 |
BiPredicate<T, U> | T, U | boolean | 对类型为 T, U 参数应用操作,返回 boolean 结果 |
多元运算(Function 变种)
函数式接口 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
UnaryOperator<T>(Function子接口) | T | T | 对类型为 T 参数应用操作,进行一元运算并返回 T 类型的结果 |
IntUnaryOperator | int | int | 对类型为 int 参数应用操作,返回 int 类型的结果 |
LongUnaryOperator | long | long | 对类型为 long 参数应用操作,进行一元运算并返回 long 类型的结果 |
DoubleUnaryOperator | double | double | 对类型为 double 参数应用操作,进行一元运算并返回 double 类型的结果 |
BinaryOperator(BiFunction子接口) | T, T | T | 对类型为 T 参数应用操作,进行二元运算并返回 T 类型的结果 |
IntBinaryOperator | int,int | int | 对类型为 int 参数应用操作,,进行二元运算并返回 int 类型的结果 |
LongBinaryOperator | long,long | long | 对类型为 long 参数应用操作,,进行二元运算并返回 long 类型的结果 |
DoubleBinaryOperator | double, double | double | 对类型为 double 参数应用操作,,进行二元运算并返回 double 类型的结果 |
网友评论