天天看点

Java8 Consumer接口源码阅读

/**
 * 代表一个操作,这个操作接受单一输入参数并且不返回任何结果。不像其它大多数函数接口,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); };
    }
}