2019-02-04——Java8 函数式接口

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

(1)加不加 @FunctionalInterface 对于接口是不是函数式接口没有影响,该注解只是提醒编译器去检查该接口是否仅包含一个抽象方法
(2)函数式接口里是可以包含默认方法,因为默认方法不是抽象方法,其有一个默认实现,所以是符合函数式接口的定义的;
(3)函数式接口里是可以包含静态方法,因为静态方法不能是抽象方法,是一个已经实现了的方法,所以是符合函数式接口的定义的;
(4)函数式接口里是可以包含Object里的public方法,这些方法对于函数式接口来说,不被当成是抽象方法(虽然它们是抽象方法);因为任何一个函数式接口的实现,默认都继承了 Object 类,包含了来自 java.lang.Object 里对这些抽象方法的实现;


基本接口

接口 描述
Consumer 代表了接受一个输入参数并且无返回的操作
Supplier 无参数,返回一个结果
Function 接受一个输入参数,返回一个结果。
Predicate 接受一个输入参数,返回一个布尔值结果。

第一次变种

接口 描述
BiConsumer 代表了一个接受两个输入参数的操作,并且不返回任何结果
BiFunction 代表了一个接受两个输入参数的方法,并且返回一个结果
BiPredicate 代表了一个两个参数返回一个boolean值的方法

第二次变种

接口 描述
UnaryOperator 接受一个参数为类型T,返回值类型也为T。
BinaryOperator 代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果

第三次变种

接口 描述
IntConsumer 接受一个int类型的输入参数,无返回值。
IntSupplier 无参数,返回一个int类型结果。
IntFunction 接受一个int类型输入参数,返回一个结果。
IntPredicate 接受一个int输入参数,返回一个布尔值的结果。
IntUnaryOperator 接受一个参数同为类型int,返回值类型也为int 。
IntBinaryOperator 接受两个参数同为类型int,返回值类型也为int 。

第四次变种

接口 描述
DoubleConsumer 代表一个接受double值参数的操作,并且不返回结果。
DoubleSupplier 代表一个double值结构的提供方
DoubleFunction 代表接受一个double值参数的方法,并且返回结果
DoublePredicate 代表一个拥有double值参数的boolean值方法
DoubleBinaryOperator 代表了作用于两个double值操作符的操作,并且返回了一个double值的结果。
DoubleUnaryOperator 接受一个参数同为类型double,返回值类型也为double。

你可能感兴趣的:(2019-02-04——Java8 函数式接口)