Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。
对lambda表达式的理解
形如 () -> {…}的表达式为lambda表达式,左边为参数列表,右边为代码块,lambda表达式能实现将代码作为参数进行传递。
其本质是将代码传递给函数式接口(接口中有且只有一个抽象方法)中的抽象方法。
lambda表达式的使用
可以新建一个接口,在该接口中只定义一个抽象方法,接口可以使用@FunationalInterface进行声明。只定义一个抽象方法才能保证lambda表达式传递的目标方法。然后在用到了这个接口作为形参的时候传入lambda表达式,lambda表达式就传递到了该类唯一一个抽象方法中,然后就可以像使用普通函数一样使用该函数了。
常见函数式接口
Supplier
生产者
抽象方法:get()
参数:void
返回:T
Consumer
消费者
抽象方法:accept
参数:T
返回:void
Predicate
判断者
抽象方法:test()
参数:T
返回:boolean
Function
类型转换
抽象方法:apply
参数:T
返回:R
可使用andThen进行连接