Consumer (消费型) 定义
Represents an operation that accepts a single input argument and returns no result. (有参无返)
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
default Consumer<T> andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}
# 个人理解:Consumer<? super T> 是针对 Consumer<T> 而言的,传入父类集合返回子类集合
接口实现方式
# 方式1: 传统方式
Consumer<String> consumer = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
Stream.of("aaa", "bbb", "ddd", "ccc", "fff").forEach(consumer);
# 方式2: lambda表达式
Stream.of("aaa", "bbb", "ddd", "ccc", "fff")..forEach(s -> System.out.print(s));
接口的使用
Consumer<StringBuilder> consumer2 = (str) -> str.append("Jack!");
Consumer<StringBuilder> consumer2 = (str) -> str.append(" Bob!");
StringBuilder sb = new StringBuilder("Hello ");
consumer1.accept(sb); // Hello Jack!
consumer1.andThen(consumer2).accept(sb); // Hello Jack! Bob!