推荐一个Java教程:http://blog.didispace.com/books/java8-tutorial/
这几个接口都在
java.util.function 包下
Predicate<T>:断言型接口
主要是用于判断,返回值为boolean类型
boolean test(T t);
大致有两种用法
Predicate<Collection<?>> predicates = (list)->{ return CollectionUtils.isEmpty(list); }; List list = null; boolean isEmpty = predicates.test(list); //类::Method Predicate<String> isEmpty2 = String::isEmpty;
Consumer<T> :消费型接口
主要是无返回值操作
void accept(T t);
使用方法
//在List的Stream操作中 void forEach(Consumer<? super T> action); //举例 Stream<Integer> stream = new ArrayList<Integer>().stream(); stream.forEach(System.out::println);
Supplier<T>
接口产生一个给定类型的结果。与Function不同的是,Supplier没有输入参数。
T get();
Function<T,R>:函数型接口
接口方法入参会给定一个指定类型,但是返回的时候又会是其他类型
InputStream fileInputStream = new FileInputStream("/test.txt"); //这里一输入流转为缓冲输入流举例 Function<InputStream,BufferedInputStream> func = inputStream -> { return new BufferedInputStream(inputStream); }; BufferedInputStream apply = func.apply(fileInputStream);