java8提供的函数式接口在Function包下有几十个接口,但是这几十个接口是从下面4种接口扩展而来的。下面我们看看这四种函数式接口。
java8的函数式编程主要就是4类接口。
Consumer(类似于消费者需要传入参数无返回值)
Supplier(类似于生产者不需要传入参数,但有返回值)
Function(有输入也有返回)
Predicate(判断函数,有输入也有返回,返回trueor false)下面我们从代码里面来看看这四种接口的用法
public class Test{
public static void main(String[] arg){
//类似于消费者 需要传入参数,不返回
Consumer<String> c = (e)-> System.out.println(e);
//bi = binary 二元的意思 即有两个参数的消费者
BiConsumer<String,Integer> bc = (e,e2)-> System.out.println(e+e2);
c.accept("zsq");
bc.accept("zsq",22);
//类似于生产者 不需要传入参数,但有返回值
Supplier<String> s = ()-> {return "zsq";};
System.out.println(s.get());
//Callable是concurent包的接口
Callable<String> ca = ()->{return "zsq333";};
System.out.println(ca.call());
//function 有输入有输出
Function<Integer, Boolean> f = (t)->t>3;
BiFunction<Integer, Integer, Boolean> bf = (e1,e2)->e1+e2>4;
System.out.println(f.apply(4));
System.out.println(bf.apply(4,4));
//Predicate 判断函数,接受参数 经过判断后 返回判断值
Predicate<String> p = (e)->e.equals("null");
BiPredicate<Integer, Integer> bp = (e1,e2)->e1==e2;
System.out.println(p.test("null"));
System.out.println(bp.test(3,4));
}
}