天天看點

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); };
    }
}