java1.8 lambda表达式(函数式接口)

发布于 2020-06-01  371 次阅读


lambda表达式是java的从传统的oop(面向对象)编程和接口编程向函数式编程的一个拓展延伸,也是Java可塑强的一个重要表现,lambda与匿名内部类相似本质上是对匿名内部类的间化代码工具

lambda表达式是由函数式接口实现的推导公式,简化代码,延迟执行提高程序的效率和可维护性,注:在Java中lambda表达式只适用于函数式接口,非函数式接口lambda无法推导

函数式接口把java的定义从做什么怎么做,到为什么这么做的其他优化方案

自定义函数式接口

      函数式接口:只一个抽象方法的接口(可以通过注解@FunctionalInterface判断是否为函数式接口)

http://wql.luoqin.ltd/wp-content/uploads/2020/05/自定义函数式接口.png

lambda的延时性加载

http://wql.luoqin.ltd/wp-content/uploads/2020/05/延时性.png

java的四大函数式接口

java的函数式接口都在Java.util.function下

http://wql.luoqin.ltd/wp-content/uploads/2020/05/function.png

供给型接口:Supplier<T>

消费型接口:Consumer<T>

函数式接口:Function<T,R>

断言型接口:Predicate<T>

Supplier<T>:生产一个指定类型的数据(get),给定一个泛型

get方法:生产一个指定数据

Consumer:消费给定数据(andThen,accept)

andThen:连接方法 例:Consumer A,Consumer B;A.andThern(B).accept  A和B并没有相关性,A的消费结果并不会影响B

Function<T,R>:类型转换函数式接口(addThen,apply),给定一个初始泛型T和转换泛型R

注:addThen连接对象是转递性的(A的结果会交给B,B再做处理)

Predicate<T>:段言型接口(判断型接口),返回Boolean值(test,or,and,netage)

or,and,netage:分别是多分支逻辑判断或,且,非(与andThen相比,除了连接还有一个判断)

 

 


路漫漫其修远兮,吾将上下而求索