介绍
源码:
@FunctionalInterface
public interface Consumer<T> {
/**
* 抽象方法:传入一个指定泛型的参数,无返回值
*/
void accept(T t);
/**
* 如同方法名字一样andThen,类似一种相加的功能(下面会举例说明)
*/
default Consumer<T> andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}
从Consumer接口源码中我们可以看到以下特性:
1.accpet方法 有泛型入参 无返回值
2.andThen方法可以链式调用
实际运用
主要用于简化处理程序
1.简单例子
public static void main(String[] args) {
testConsumer();
testAndThen();
}
/**
* 一个简单的平方计算
*/
public static void testConsumer() {
//设置好Consumer实现方法
Consumer<Integer> square = x -> System.out.println("平方计算 : " + x * x);
//传入值
square.accept(2);
}
/**
* 定义3个Consumer并按顺序进行调用andThen方法
*/
public static void testAndThen() {
//当前值
Consumer<Integer> consumer1 = x -> System.out.println("当前值 : " + x);
//相加
Consumer<Integer> consumer2 = x -> { System.out.println("相加 : " + (x + x)); };
//相乘
Consumer<Integer> consumer3 = x -> System.out.println("相乘 : " + x * x);
//andThen拼接
consumer1.andThen(consumer2).andThen(consumer3).accept(1);
}
2.常用框架的例子
常见的如
Stream 类的 forEach 方法 List.Stream.forEach(item->dosomething)
Mybatis-plus的com.baomidou.mybatisplus.core.conditions.interfaces.Nested#or(java.util.function.Consumer)
总结:Consumer接口主要是用于简化处理程序,用好Consumer接口的泛型,透传泛型的功能,可以大大简化代码。
【简化代码】 Java 泛型 提升抽象能力
【简化代码】Supplier接口实际运用
【简化代码】Comsumer复杂实际运用
多总结,多学习 这样就不用加晚班。
版权声明:本文为hello__word__原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。