Consumer接口
@FunctionalInterface
public interface Consumer<T> {
/**
* 对给定参数执行消费操作。
*/
void accept(T t);
/**
* 如果一个方法的参数和返回值全都是 Consumer 类型,
* 那么首先做一个操作, 然后再做一个操作。来完成一个链式操作
*/
default Consumer<T> andThen(Consumer<? super T> after) {
//requireNonNull 静态方法将会在参数为null时主动抛出NullPointerException 异常。
//这省去了重复编写if语句和抛出空指针异常的麻烦
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}
public static void main(String[] args) {
Consumer<String> consumer = s -> {
System.out.println(s+"!");
};
consumer.accept("Hello");
}
控制台输出
Hello!
组合调用当需要多次消费"Hello"并且有顺序的调用时可以使用这个。当然你也可以选择使用链式调用
public static void main(String[] args) {
Consumer<String> consumer = s -> {
System.out.println(s+"!");
};
Consumer<String> consumer2 = s -> {
System.out.println(s+"!!!");
};
consumer.andThen(consumer2).accept("Hello");
}
控制台输出
Hello!
Hello!!!