如果 lambda 表达式不需要参数,因此名称过多,我该如何编写?
这种方式不编译:
setRowFactory(-> new TableRowCustom());
但是这个可以:
setRowFactory(__ -> new TableRowCustom());
有没有更好的办法?
最佳答案
既然你提到这行得通
setRowFactory(__ -> new TableRowCustom());
我假设预期的功能接口(interface)方法必须接受单个参数。 The identifier _
is a reserved keyword since Java 8.
我只会使用一次性的单个(有效标识符)字符。
setRowFactory(i -> new TableRowCustom());
setRowFactory($ -> new TableRowCustom());
虽然,您应该避免使用 $
,Java 语言规范 states
The dollar sign should be used only in mechanically generated source code or, rarely, to access pre-existing names on legacy systems. The underscore may be used in identifiers formed of two or more characters, but it cannot be used as a one-character identifier due to being a keyword.
你也可以写出来
setRowFactory(ignored -> new TableRowCustom());
要明确。
Java Language Specification定义 lambda 表达式的语法
LambdaExpression:
LambdaParameters -> LambdaBody
和
LambdaParameters:
Identifier
( [FormalParameterList] )
( InferredFormalParameterList )
InferredFormalParameterList:
Identifier {, Identifier}
换句话说,您不能省略标识符。
作为 Holger建议,如果当他们决定使用 _
作为未使用的参数名称时,很容易在源代码中从 __
更改为 _
代码。您现在可能只想坚持下去。
关于java - 在正文中忽略参数时编写 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37597728/