Java 8 中的 消费者接口Consumer 是一个函数接口,它可以接受一个泛型 类型参数,它属于java.util.function包。
accept(T) 方法:是 Consumer 函数式接口的方法,传入单个输入参数,无返回值,可以用于 Lambda 表达式和方法引用。
andThen(Consumer) 方法:可以传入一个 Consumer ,返回组合了两个 Consumer 后的 Consumer ,传入的 Consumer 不能为 null,否则会得到 NullPointerException 。
你可以使用 Consumer 来执行某个动作,比如打印操作,该动作接受一个参数并且不返回任何值。
我们先来看两个例程:
import java.util.function.Consumer;
public class ConsumerTest {public static void main(String[] args) {Consumer<String> first = x -> System.out.println("1."+x.toLowerCase());Consumer<String> second = y -> System.out.println("2." + y);System.out.println("开始");Consumer<String> result = first.andThen(second);//调用了accept 时,会先执行 first 的代码,再执行 second 的代码result.accept("World");}
}
调用accept 方法时,会先执行 first 里的代码,再执行 second 里的代码
测试结果:
第二个例程:
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Stream;
public class ConsumerTest {public static void main(String[] args) {List<String> list = new ArrayList<>();Consumer <String> consumer = x -> {if (x.startsWith("a")){list.add(x);}};Stream.of( "aa","bb","cac","abd","ee" ).forEach(consumer);list.forEach(System.out::println);}
}
测试结果:
未完待续