【发布时间】:2016-06-02 16:49:43
【问题描述】:
如果 lambda 表达式不需要参数,因此名称过多,我该如何编写?
这种方式不编译:
setRowFactory(-> new TableRowCustom());
但是这个可以:
setRowFactory(__ -> new TableRowCustom());
有没有更好的办法?
【问题讨论】:
-
setRowFactory的参数所期望的功能接口类型(和方法)是什么? -
你也可以使用 TableRowCustom::new 的方法引用,它是 lambda 的替代品
-
@george,您不能使用方法引用来引用不采用与目标函数类型相同数量的参数的方法(显然这里是 0 对 1)。
-
@george 他的构造函数没有参数,而且预期的接口显然是带一个的(正如他所说,它是用
__编译的),所以它不可能是一个简单的Supplier。事实上,我认为通过谷歌搜索方法名称可能是 JavaFXCallback,参见 TableView#setRowFactory(Callback)。 -
@george:只使用构造函数引用而不考虑意外的函数参数可能会导致类似“Horrendous performance & large heap footprint of Java 8 constructor reference”