您的位置:首页 > 其它

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方法:

Object[] buttons = stream.toArray();
但是是返回Object[],我们想要的是Button[],stream API通过构造器引用解决了这个问题。它允许将Button[]::new传递给toArray方法: 

Button[] buttons = stream.toArray(Button[]::new)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: