tipo puede instrucciones funciones expresiones expresion delegados delegado convertir anonimas java lambda java-8

java - puede - instrucciones lambda c#



Escribir una expresión lambda cuando se ignoran los parámetros en el cuerpo. (1)

¿Cómo escribo una expresión lambda si no requiere argumentos y, por lo tanto, su nombre es excesivo?

De esta manera no se compila:

setRowFactory(-> new TableRowCustom());

Pero este hace:

setRowFactory(__ -> new TableRowCustom());

¿Hay alguna manera mejor?


Ya que has mencionado que esto funciona

setRowFactory(__ -> new TableRowCustom());

Supongo que el método de interfaz funcional esperado debe aceptar un solo argumento. El identificador _ es una palabra clave reservada desde Java 8.

Yo solo usaría un solo carácter desechable (identificador válido).

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

o incluso

setRowFactory(ignored -> new TableRowCustom());

para ser explícito

La especificación del lenguaje Java define la sintaxis de una expresión lambda

LambdaExpression: LambdaParameters -> LambdaBody

y

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

En otras palabras, no puede omitir un identificador.

Como sugiere Holger , si y cuando decidan usar _ como un nombre de parámetro no utilizado, será fácil cambiar de __ a _ en su código fuente. Es posible que desee seguir con eso por ahora.