简介
-
Java Consumer接口来自Java 8中引入的 java.util.function包。
-
Consumer是一个功能接口,用来作为lambda表达式或方法引用的任务目标(传递一个参数执行指定的方法)。
-
Consumer的功能接口是一个接受单一参数并且不返回任何结果的操作
-
Consumer的功能方法是accept(T t)。
源码分析
@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); };
}
}
-
accept : 这是Consumer功能接口的功能方法。accept 方法对给定的参数进行这一操作。
-
andThen : 此方法返回一个组合的Consumer,该Consumer先执行原始的Consumer操作,然后按照从左到右的顺序执行给定的andThen操作。
使用示例
public class ConsumerDemo1 {
@Test
//消费接口。消费的内容是一个函数式接口。s+s = 246
public void consumerAccept () {
handler(123, s-> Console.log("consumerAccept --> " + (s+s)));
/* 输出结果
consumerAccept --> 246*/
}
//Consumer 消费接口,传入一个泛型参数
public <T> void handler (T t, Consumer<T> consumer) {
consumer.accept(t);
}
@Test
//消费接口。消费的内容是一个函数式接口。s+s = 246 c-1 = 122
public void consumerAndThen () {
handler(123, s-> Console.log("consumerAndThen1 --> " + (s+s)), c-> Console.log("consumerAndThen2 --> " + (c-1)));
/* 输出结果
consumerAndThen1 --> 246
consumerAndThen2 --> 122*/
}
//Consumer 消费接口,传入一个泛型参数
public <T> void handler (T t, Consumer<T> consumer1, Consumer<T> consumer2) {
consumer1.andThen(consumer2).accept(t);
}
}
总结
主要使用场景是:需要操作一个对象,但是不需要返回任何数据。