一、函数式接口
- 唯一的抽象方法 使用
default
定义普通方法(默认方法),通过对象调用。 - 实现接口后,因为默认方法不是抽象方法,所以可以不重写,但是如果开发需要,也可以重 写实现接口后。当然如果接口中的默认方法不能满足某个实现类需要,那么实现类可以覆盖默认方法。签名跟接口
default
方法一致,但是不能再加default
修饰符。 - 使用
static
定义静态方法,通过接口名调用。
二、四大常用接口
以下的接口全在java.util.function
包下。
1.Supplier<T>
(无参有返)
提供一个类型为T的数据,一般用作方法参数。T get()
Supplier<T> //提供一个T类型的对象
IntSupplier //提供一个Int类型的对象
LongSupplier //提供一个Long类型的对象
DoubleSupplier //提供一个Double类型的对象
BooleanSupplier //提供一个Boolean类型的对象
2.Consumer<T>
(有参无返)
用于消费数据,消费数据类型通过泛型决定。void accept(T t)
Consumer<T> //接受单个参数,进行消费
BiConsumer<T,U> //接受两个参数,进行消费
IntConsumer //接受一个Integer类型的参数,进行消费
LongConsumer //接受一个Long类型的参数,进行消费
DoubleConsumer //接受一个Double类型的参数,进行消费
ObjIntConsumer<T> //接受T和Integer类型的参数,进行消费
ObjLongConsumer<T> //接受T和Long类型的参数,进行消费
ObjDoubleConsumer<T>//接受T和Double类型的参数,进行消费
3.Perdicate<T>
(有参有返)
用于对某种数据类型的数据进行条件判断。boolean test(T t)
Perdicate<T> //接受单个参数,进行判断
BiPerdicate<T,U> //接受两个参数,进行判断
IntPerdicate //接受一个Integer类型的参数,进行判断
LongPerdicate //接受一个Long类型的参数,进行判断
DoublePerdicate //接受一个Double类型的参数,进行判断
4.Function<T,R>
(有参有返,T转为R)
用于将一种数据类型转换成另一种数据类型,类似于映射
,高阶函数map
就是用的这个。R apply(T t)
Function<T,R> //接受T类型的参数,转换成R类型。
IntFunction<R> //接受Integer类型的参数,转换成R类型。
LongFunction<R> //接受Long类型的参数,转换成R类型。
DoubleFunction<R> //接受Double类型的参数,转换成R类型。
ToIntFunction<T> //接受T类型的参数,转换成Integer类型。
ToLongFunction<T> //接受T类型的参数,转换成Long类型。
ToDoubleFunction<T> //接受T类型的参数,转换成Double类型。
IntToLongFunction //接受Int类型的参数,转换成Long类型。
IntToDoubleFunction //接受Int类型的参数,转换成Double类型。
LongToIntFunction<T> //接受Long类型的参数,转换成Integer类型。
LongToDoubleFunction<T> //接受Long类型的参数,转换成Double类型。
DoubleToIntFunction<T> //接受Double类型的参数,转换成Integer类型。
DoubleToLongFunction<T> //接受Double类型的参数,转换成Long类型。
ToIntBiFunction<T,U> //接受T类型和U类型的参数,转换成Integer类型。
ToLongBiFunction<T,U> //接受T类型和U类型的参数,转换成Long类型。
ToDoubleBiFunction<T,U> //接受T类型和U类型的参数,转换成Double类型。
IntUnaryOperator //接受Integer类型的参数,转换成Integer类型。可以理解为`一元操作符`。
LongUnaryOperator //接受Long类型的参数,转换成Long类型。
DoubleUnaryOperator //接受Double类型的参数,转换成Double类型。
IntBinaryOperator //接受2个Integer类型的参数,转换成Integer类型。可以理解为`二元操作符`。
LongBinaryOperator //接受2个Long类型的参数,转换成Long类型。
DoubleBinaryOperator //接受2个Double类型的参数,转换成Double类型。