Właśnie zastąpiłem s
w poniższym wyrażeniu lambda przez _
:
s -> Integer.parseInt(s)
Kompilator Eclipse mówi:
„_” nie powinno być używane jako identyfikator, ponieważ jest to zastrzeżone słowo kluczowe od poziomu źródła od 1.8.
Nie znalazłem żadnego wyjaśnienia w JLS §3.9 Struktura leksykalna / Słowa kluczowe.
_
nie będzie dozwolone jako jakiekolwiek legalne nazwy identyfikatorów, a nie tylko jako nazwa parametru lambda. Naprawiono to w kompilacji 43: bugs.openjdk.java.net/browse/JDK-8061549enum
iassert
były to identyfikatory prawne…Jest to faza 2 JEP 302 , która doda podkreślenie jako znak specjalny oznaczający nieużywane parametry w wyrażeniach lambda.
źródło
$
do tego celu.Zmiany języka Java dla Java SE 9 https://docs.oracle.com/javase/9/language/toc.htm#JSLAN-GUID-16A5183A-DC0D-4A96-B9D8-AAC9671222DD
Od wersji Java 9 znak _ nie może być już używany jako identyfikator, nie tylko w kontekście lambda
źródło