Java8函数式编程接口
函数式接口
- 将方法作为参数传递
- lamba表达式
- 将数学函数抽象成接口对象
Consumer:消费型接口
抽象方法:void accept(T t) 接收一个参数进行消费,但无需返回结果
1 | Consumer c1 = (x) -> System.out.println(x); //单个入参和方法可简写 c1 = System.out::println |
默认方法:andThen(Consumer<? super T> after) 先执行调用andThen的accept方法,再执行andThen方法中参数after的accept方法
1 | Consumer c1 = (x) -> System.out.println("c1" + x); |
Supplier: 供给型接口
抽象方法:T get(),无参数,有返回值。适合提供数据的场景使用
1 | Supplier<String> s0 = () -> "SSS"; |
Function<T,R>: 函数型接口
1 | R apply(T t); |
抽象方法:apply 传入一个参数,返回想要的结果
1 | Function<Integer, Integer> f1 = (x) -> x * x; |
默认方法:compose 先执行 compose方法的参数before中的apply方法,然后将执行结果传递给调用compose函数中的apply再执行一次
1 | Function<Integer, Integer> f1 = (x) -> x * x; |
默认方法:andThen 先执行调用andThen函数的apply方法,然后将执行结果传递给andThen方法的参数after去执行apply方法
1 | Function<Integer, Integer> f1 = (x) -> x * x; |
静态方法 identity 输入什么就返回什么
1 | Function<Integer, Integer> f0 = Function.identity(); |
Predicate :断言型接口
抽象方法:boolean test(T t) 传入一个参数,返回一个布尔值
1 | Predicate<Integer> p0 = (x) -> x < 10; |
默认方法:and(Predicate<? super T> other),相当于逻辑运算符中的&&,当两个Predicate函数的返回结果都为true时才返回true。
默认方法:negate(),这个方法的意思就是取反。
默认方法:or(Predicate<? super T> other) ,相当于逻辑运算符中的||,当两个Predicate函数的返回结果有一个为true则返回true,否则返回false。
默认方法:isEqual(Object targetRef),对当前操作进行”=”操作,即取等操作,可以理解为 A == B。
BiFunction<T, U, R> 多个参数接口
- T:函数的第一个参数类型
- U:函数的第二个参数类型
- R:函数的结果类型
1 | BiFunction<Integer, Integer, Integer> b1 = (x, y) -> x + y; //实现两数相加 |