/**
* 代表一個操作,這個操作接受單一輸入參數并且不傳回任何結果。不像其它大多數函數接口,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); };
}
}