Java8新特性 consumer
2021/9/20 20:34:12
本文主要是介绍Java8新特性 consumer,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
个人公众号,欢迎关注下:小蜗牛会飞
Java8新特性 consumerJava8的一个新特性-consumerhttps://mp.weixin.qq.com/s/YIddXxQvW18ic73O3Jl_0w
今天来聊聊Java8的一个新特性-consumer,这个是在项目中发现同事用过,所以就研究研究一下。
consumer从字面上面来理解就是消费的意思,用过mq的,应该大概可以了解到意思。
我们先来看看Java8定义的这个consumer的接口:
@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); }; } }
该接口被@FunctionalInterface注解修饰,这个注解的意思代表的是这个接口只有一个抽象接口方法,如果超过一个,只不能不用该接口,会编译不通过。
该接口有一个抽象方法accept,接受的是泛型T的一个参数类型,这个方法是在consumer的实例显示被调用之后,那么指定的函数式表达式才会被执行,请看下面例子:
// 构造函数式表达,并赋值于consumer对象,其中此时泛型已经被指定为Integer了 // 所以此时调用accept方法时,传入的对象必须一一对应传入Integer类型 Consumer<Integer> consumer = x -> { int a = x + 2; System.out.println(a);// 12 System.out.println(a + "_");// 12_ }; // 显示调用,consumer中的函数式方法才会调用,可以理解为预先 // 定义好要执行的代码逻辑,等到要执行的时候才显示的执行,这在项目中 // 的需求还是很大,比如数据还没有到达,则此时可以等到数据到达之后才调用 consumer.accept(10);
该接口方法还有另外一个默认实现方法andThen,从方法名很容易知道,先执行本接口方法的accept方法,之后再执行after的accept方法,请看下面代码:
/**传入一个Consumer类型的参数, *他的泛型类型, *跟本接口是一致的T,先做本接口的accept操作, *然后在做传入的Consumer类型的参数的accept操作 */ default Consumer<T> andThen(Consumer<? super T> after) { Objects.requireNonNull(after); return (T t) -> { accept(t); after.accept(t); }; }
例子:
public class TestConsumer { public static void main(String[] args) { // 定义第一个consumer表达式 Consumer<Integer> consumer = x -> { int a = x + 2; System.out.println(a);// 8 System.out.println(a + "_");// 8_ }; // 定义第二个consumer表达式 Consumer<Integer> after = x -> { int a = x * 2; System.out.println(a);// 12 System.out.println(a + "_");// 12_ }; // 调用方式,先执行第一个consumer表达式,执行完之后将参数直接传递给 // 后面的after表达式继续执行,这个场景可以用于相同入参不同方法先后执行顺序, consumer.andThen(after).accept(6); } }
运行结果:
88_1212_
这篇关于Java8新特性 consumer的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能
- 2024-11-28如何高效管理数字化转型项目
- 2024-11-28SMART法则好用吗?有哪些项目管理工具辅助实现?
- 2024-11-28深度剖析:6 款办公软件如何构建设计团队项目可视化管理新生态?
- 2024-11-28HTTP缓存课程:新手入门指南
- 2024-11-28实战丨证券 HTAP 混合业务场景的难点问题应对