在主体中忽略参数时编写lambda表达式

如果lambda表达式不需要参数,因此它的名称是否过多,我如何编写它?

这种方式不编译:

setRowFactory(-> new TableRowCustom()); 

但是这个做了:

 setRowFactory(__ -> new TableRowCustom()); 

有没有更好的办法?

既然你提到过这个有效

 setRowFactory(__ -> new TableRowCustom()); 

我假设预期的function接口方法必须接受单个参数。 标识符_是Java 8以来的保留关键字。

我只想使用一次性单(有效标识符)字符。

 setRowFactory(i -> new TableRowCustom()); setRowFactory($ -> new TableRowCustom()); // allowed, but avoid this 

甚至

 setRowFactory(ignored -> new TableRowCustom()); 

要明确。

Java语言规范定义了lambda表达式的语法

 LambdaExpression: LambdaParameters -> LambdaBody 

 LambdaParameters: Identifier ( [FormalParameterList] ) ( InferredFormalParameterList ) InferredFormalParameterList: Identifier {, Identifier} 

换句话说,您不能省略标识符。


正如Holger建议的那样,如果他们决定使用_作为未使用的参数名称,则很容易在源代码中从__更改为_ 。 你可能想暂时坚持下去。