jdk8新特性

1.如果接口只有一个抽象接口,那么是一个函数式接口
2.如果接口声明了functionalinterface,那么编译器就会以函数式接口的定义来要求
3.如果某个接口只有一个抽象方法,编译器依然会将这个接口看做函数接口

Function 接受一个值,返回另外一个
eg : A -> B
默认方法有 compose :接受一个Function对象当参数,先执行参数中function的apply方法,在执行调用方的apply方法
andThen 和compose相反,先执行调用方, 再执行参数中的apply方法

BiFunction 接受a,b的值,经过处理之后返回c
eg:(A,B) - > return A + B
只有andthen方法,方法中的参数为function,执行完bifunction之后对function中进行处理

高阶函数:
和python一样,一个函数作为返回值,或者是对象传递

interface 中可以有default方法,default方法中有代码实现
interface 中有默认的static 方法,这两种方法都不是抽象方法,不影响函数式接口判定

lambda表达式在日常编写代码的时候,可以当做参数传递,表示代码行为,可增强代码复用性

BinaryOpeatorTest
表示接受两个相同类型的值,返回一个同类型的值

Predicate
流中filter方法的参数,表示接受任意参数返回boolean值
(T t) -> boolean

Supplier
不接受任何参数,返回任意值 可以用在工厂方法中 也可以用函数引用,构造方法引用
Supplier s = Class:new Class()
() -> T t

Optional
optional可以判断参数是否为空,
Optional optional = Optional.ofNullable(object);可以判断是否为空

你可能感兴趣的:(jdk8新特性)