Ответ 1
Поскольку вы упомянули, что это работает
setRowFactory(__ -> new TableRowCustom());
Я предполагаю, что ожидаемый метод функционального интерфейса должен принимать один аргумент. Идентификатор _
является зарезервированным ключевым словом, так как Java 8.
Я просто использовал бы одноразовый одиночный (действительный идентификатор).
setRowFactory(i -> new TableRowCustom());
setRowFactory($ -> new TableRowCustom()); // allowed, but avoid this
или даже
setRowFactory(ignored -> new TableRowCustom());
чтобы быть явным.
Спецификация языка Java определяет синтаксис выражения лямбда
LambdaExpression:
LambdaParameters -> LambdaBody
и
LambdaParameters:
Identifier
( [FormalParameterList] )
( InferredFormalParameterList )
InferredFormalParameterList:
Identifier {, Identifier}
Другими словами, вы не можете опустить идентификатор.
Как Holger предлагает, если и когда они решат использовать _
в качестве неиспользуемого имени параметра, будет легко измениться с __
на _
в исходном коде. На данный момент вы можете просто придерживаться этого.