_(下划线)是一个保留关键字

我刚刚用下面的lambdaexpression式replace了s

 s -> Integer.parseInt(s) 

Eclipse编译器说:

'_'不应该被用作一个标识符,因为它是来自源级别1.8的保留关键字。

我还没有在JLS§3.9词法结构/关键词中find任何解释。

这个地方是JLS§15.27.1。 Lambda参数

如果lambda参数具有名称_(即单个下划线字符),则会出现编译时错误。

不鼓励在任何情况下使用variables名称_。 Java编程语言的未来版本可能会将此名称保留为关键字和/或赋予它特殊的语义。

因此,Eclipse消息是有误导性的,尤其是当两个情况都使用相同的消息时,为lambda参数生成错误或者为任何其他_标识符生成警告时。

Java SE 9的Java语言更改 https://docs.oracle.com/javase/9​​/language/toc.htm#JSLAN-GUID-16A5183A-DC0D-4A96-B9D8-AAC9671222DD

从Java 9开始,_字符不能再用作标识符,而不仅仅是在lambda上下文中

下划线字符不是合法的名称。

如果使用下划线字符(“_”)标识符,则不能再编译源代码。