Acabei de substituir s
a seguinte expressão lambda por _
:
s -> Integer.parseInt(s)
O compilador Eclipse diz:
'_' não deve ser usado como um identificador, uma vez que é uma palavra-chave reservada do nível de origem 1.8 em diante.
Eu não encontrei nenhuma explicação em JLS §3.9 Estrutura Lexical / Palavras-chave.
_
não será permitido qualquer nome de identificador legal e não apenas um nome de parâmetro lambda. Na verdade, isso foi corrigido na versão 43: bugs.openjdk.java.net/browse/JDK-8061549enum
eassert
foram identificadores legais ...É a Fase 2 do JEP 302 , que vai adicionar o sublinhado como um caractere especial para denotar parâmetros não utilizados em expressões lambda.
fonte
$
para este propósito.Alterações na linguagem Java para Java SE 9 https://docs.oracle.com/javase/9/language/toc.htm#JSLAN-GUID-16A5183A-DC0D-4A96-B9D8-AAC9671222DD
No Java 9, o caractere _ não pode mais ser usado como um identificador, não apenas dentro do contexto lambda
fonte