lambda表达式:构造器引用
2015-12-08 22:42
253 查看
构造器引用同方法引用类似,不同的是在构造器引用中方法名师new。例如,Button::new 表示Button类的构造器引用。对于拥有多个构造器的类,选择使用那个构造器取决于上下文。
可以使用数组类型来编写构造器引用。例如,int[]::new是一个含有一个参数的构造器引用,这个参数就是数组的长度。它等同于lambda表达式 x -> new int[x]。
数组构造器引用可以用来绕过Java中的一个限制。在Java中,无法构造一个泛型类型T的数组。表达式new T
是错误的,因为它会被擦除为 new Object
。假设我们希望构造一组按钮,Stream接口中有一个返回Object数组的toArray方法:
可以使用数组类型来编写构造器引用。例如,int[]::new是一个含有一个参数的构造器引用,这个参数就是数组的长度。它等同于lambda表达式 x -> new int[x]。
数组构造器引用可以用来绕过Java中的一个限制。在Java中,无法构造一个泛型类型T的数组。表达式new T
是错误的,因为它会被擦除为 new Object
。假设我们希望构造一组按钮,Stream接口中有一个返回Object数组的toArray方法:
Object[] buttons = stream.toArray();但是是返回Object[],我们想要的是Button[],stream API通过构造器引用解决了这个问题。它允许将Button[]::new传递给toArray方法:
Button[] buttons = stream.toArray(Button[]::new)
相关文章推荐
- Exchange Server 2013 运维系列——恢复已删除或禁用的邮箱
- android5.0自带兼容控件__RecyclerView
- Thread 和 Runnable创建新线程的区别,Runnable可以共享线程类的实例属性
- UGUI_不规则图片点击事件处理
- 正则表达式计算代码数
- Exchange Server 2013 运维系列——增量备份及数据还原
- postgres关键字、常量和数据类型
- HDU5074 dp xingxing在努力
- jquery.tmpl.js
- IntelliJ IDEA 设置 编辑器字体大小背景色及快捷键
- OC - 限时代码
- Linux 文件系统概况
- ORACLE角色(通过DBA创建)
- Struts2运行流程分析
- Struts2运行流程分析
- ubuntu下访问其他盘出现挂在错误解决办法
- 什么是AngularJS
- ODL编译问题记录
- Exchange Server2013 系列:常规配置
- 黑马程序员---java入门学习需要知道的准备知识