目录
一、函数式接口
二、函数式编程
三、常用的函数式接口
函数式接口:有且仅有一个抽象方法的接口,接口中可以包含(默认,静态,私有)。
@FunctionalInterface注解 作用:可以检测接口是否是一个函数式接口。
使用Lambda优化日志
使用Lambda作为参数和返回值
java.util.function.Supplier<T>接口仅包含一个无参的方法: T get()。用来获取一个泛型参数指定类型的对象数据。 Supplier<T>接口被称之为生产型接口。
java.util.function.Consumer<T>接口 Consumer接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数据。
Consumer接口的默认方法andThen 作用:需要两个Consumer接口,可以把两个Consumer接口组合到一起,再对数据进行消费。 例:
//Consumer<String> con1 //Consumer<String> con2 String s = "hello"; con1.accept; con2.accept; //连接两个Consumer接口 再进行消费 con1.andThen(con2).accept(s);//写前面先消费
java.util.function.Predicate<T>接口 作用:对某个数据类型的数据进行判断,结果返回一个boolean值
Predicate接口中包含一个抽象方法: boolean test(T t):用来对指定数据类型数据进行判断的方法。
Predicate接口中有一个方法and(or),表示并且的关系,也可以用于连接两个判断条件。
default Predicate<T> and(Predicate<? super T> other){ Objects.requireNonNull(other); return (t) -> this.test(t) && other.test(t); }
Predicate接口中有一个方法negate,表示取反的意思。
default Predicate<T> negate(){ return(t) -> !test(t); }
java.util.function.Function<T, R>接口:用来根据一个类型的数据得到另一个类型的数据。 前者为前置条件,后者为后置条件。 Function接口中最主要的抽象方法为:R apply(T t),根据T的参数获取类型R的结果。 例:将String类型转换为Integer类型。
Function接口中的默认方法andThen:用来进行组合操作