java8 Consumer()函数
程序员文章站
2024-01-10 09:03:22
...
前言:啊吖吖~,我又来分享java8新特性系列函数了,最近有在努力学习,认真分享知识,也希望认真阅读的你发光脑门不亮,点赞~笔芯
老规矩,上源码
此函数标有@FunctionalInterface 是java8新特性函数式接口
@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); };
}
}
举个栗子,看看如何使用
1.accept(T t)方法
首先定义consumer1变量,Lambda表达式是要执行业务逻辑代码,accept()方法没有返回值,所以当执行 consumer1.accept(3);时,相当于3是参数num,执行逻辑后,输出4.(注:如果想要执行逻辑后有返回值,请参考上篇博文https://blog.csdn.net/lxj_1993/article/details/113336626#comments_15141662)
public static void main(String[] args) {
Consumer<Integer> consumer1 = num -> {
num++;
System.out.println(num);//4
};
consumer1.accept(3);
}
2.andThen(Consumer<? super T> after)方法
consumer1和consumer2是不同逻辑的代码,当执行 consumer1.andThen(consumer2).accept(3);时,先执行consumer1的代码逻辑,然后执行consumer2的代码逻辑,实际工作中如果同一个参数需要先后执行多个不同的逻辑,可以用Consumer.andThen()优雅的处理。
总结:A.andThen(B).accept() 先执行A表达式,再执行B表达式。
如果觉得有收获,请为互联网美少女刘可爱点个赞吧。
public static void main(String[] args) {
Consumer<Integer> consumer1 = num -> {
num++;
System.out.println(num);//4
};
Consumer<Integer> consumer2 = i -> {
System.out.println("我是数字 "+i);
};
consumer1.andThen(consumer2).accept(3);
}
输出结果:
上一篇: 如可获取url中非本地域名,该怎么解决
下一篇: 每天一点数据库之