Dal momento che hai detto che questo funziona
setRowFactory(__ -> new TableRowCustom());
Suppongo che il metodo di interfaccia funzionale previsto deve accettare un singolo argomento. The identifier _
is a reserved keyword since Java 8.
Vorrei utilizzare solo un carattere throwaway singolo (identificativo valido).
setRowFactory(i -> new TableRowCustom());
setRowFactory($ -> new TableRowCustom()); // allowed, but avoid this
o anche
setRowFactory(ignored -> new TableRowCustom());
essere espliciti.
Il Java Language Specification definisce la sintassi di un'espressione lambda
LambdaExpression:
LambdaParameters -> LambdaBody
e
LambdaParameters:
Identifier
([FormalParameterList])
(InferredFormalParameterList)
InferredFormalParameterList:
Identifier {, Identifier}
In altre parole, non è possibile omettere un identificatore.
Come Holger suggerisce, se e quando decidono di utilizzare _
come un nome di parametro non utilizzato, sarà facile cambiare __
-_
nel codice sorgente. Potresti voler semplicemente restare con quello per ora.
fonte
2016-06-02 16:59:46
Qual è il tipo di interfaccia funzionale (e il metodo) previsto dal parametro 'setRowFactory'? –
è anche possibile utilizzare un riferimento al metodo con solo TableRowCustom :: new che sostituisce lambda – george
@george, non è possibile utilizzare un riferimento al metodo per fare riferimento a un metodo che non prende lo stesso numero di parametri del funzionale di destinazione scrivi (qui 0 vs 1, apparentemente). –