Dim*_*ims 27 java lambda java-8
如果lambda表达式不需要参数,因此它的名称是多余的,我如何编写它?
这种方式不编译:
setRowFactory(-> new TableRowCustom());
Run Code Online (Sandbox Code Playgroud)
但是这个做了:
setRowFactory(__ -> new TableRowCustom());
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
Sot*_*lis 32
既然你提到过这个有用了
setRowFactory(__ -> new TableRowCustom());
Run Code Online (Sandbox Code Playgroud)
我假设预期的功能接口方法必须接受单个参数.标识符_
是自Java 8以来的保留关键字.
我只想使用一次性单(有效标识符)字符.
setRowFactory(i -> new TableRowCustom());
setRowFactory($ -> new TableRowCustom()); // allowed, but avoid this
Run Code Online (Sandbox Code Playgroud)
甚至
setRowFactory(ignored -> new TableRowCustom());
Run Code Online (Sandbox Code Playgroud)
要明确.
在Java语言规范定义了一个lambda表达式的句法
LambdaExpression:
LambdaParameters -> LambdaBody
Run Code Online (Sandbox Code Playgroud)
和
LambdaParameters:
Identifier
( [FormalParameterList] )
( InferredFormalParameterList )
InferredFormalParameterList:
Identifier {, Identifier}
Run Code Online (Sandbox Code Playgroud)
换句话说,您不能省略标识符.
作为霍尔格建议,如果当他们决定使用_
作为一个未使用的参数名称,它会很容易从改变__
到_
你的源代码.你可能想暂时坚持下去.