在主体中忽略参数时编写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建议的那样,如果他们决定使用_
作为未使用的参数名称,则很容易在源代码中从__
更改为_
。 你可能想暂时坚持下去。