Skoro już wspomniałem, że to działa
setRowFactory(__ -> new TableRowCustom());
Zakładam, że oczekiwany sposób funkcjonalny interfejs musi przyjmować jeden argument. The identifier _
is a reserved keyword since Java 8.
Po prostu użyłbym znaku jednorazowego (ważny identyfikator).
setRowFactory(i -> new TableRowCustom());
setRowFactory($ -> new TableRowCustom()); // allowed, but avoid this
lub nawet
setRowFactory(ignored -> new TableRowCustom());
być jawne.
Java Language Specification definiuje składnię wyrażenia lambda
LambdaExpression:
LambdaParameters -> LambdaBody
i
LambdaParameters:
Identifier
([FormalParameterList])
(InferredFormalParameterList)
InferredFormalParameterList:
Identifier {, Identifier}
Innymi słowy, nie można pominąć identyfikator.
Jak Holger wskazuje, czy i kiedy zdecydujesz się skorzystać _
jako niewykorzystane nazwy parametru, to będzie łatwo zmienić z __
do _
w kodzie źródłowym. Możesz na razie po prostu trzymać się tego.
Jaki jest typ interfejsu funkcjonalnego (i metoda) oczekiwany przez parametr 'setRowFactory'? –
można również użyć odwołania do metody tylko TableRowCustom :: new, które jest zamiennikiem dla lambge – george
@george, nie można użyć odwołania do metody, aby odwołać się do metody, która nie przyjmuje takiej samej liczby parametrów, jak docelowa funkcja type (najwyraźniej tutaj 0 vs 1). –