/**
* 代表一个操作,这个操作接受单一输入参数并且不返回任何结果。不像其它大多数函数接口,Consumer被
* 期望通过副作用操作。(通过副作用操作时什么意思?)
*
*这是一个函数接口,它函数方法是accept(Object)。
*/
@FunctionalInterface
public interface Consumer<T> {
/**
* 对给定参数执行这个操作
*/
void accept(T t);
/**
* 返回一个组合的Consumer,它依次执行这个操作和after操作。如果任何一个操作抛出异常,异常
* 会被传递给组合操作的调用者。如果执行这个操作抛出异常,after操作将不会被执行。
*/
default Consumer<T> andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}