Java IntelliJ IDEa 2018.2使用JDK 11将var lambda参数突出显示为错误

Java IntelliJ IDEa 2018.2使用JDK 11将var lambda参数突出显示为错误,java,intellij-idea,intellij-plugin,intellij-lombok-plugin,java-11,Java,Intellij Idea,Intellij Plugin,Intellij Lombok Plugin,Java 11,在Oracle JDK 11和IntelliJ IDEa 2018.2.4的最新版本上测试。项目语言级别为Java11 代码 输出 一切编译和运行正常,但编辑器显示编译时错误: Lambda参数的局部变量语法是否还不受支持,或者这是一个错误?如果出现此错误,则很可能安装了Lombok插件。这是一个Lombok插件检查错误 禁用以下检查将解决此问题: 文件|设置|编辑器|可能的错误|龙目岛注释检查 也可以隐式抑制检查。 Lombok intellij插件项目中的问题已创建: 在修复问题之前,应该

在Oracle JDK 11和IntelliJ IDEa 2018.2.4的最新版本上测试。项目语言级别为Java11

代码

输出

一切编译和运行正常,但编辑器显示编译时错误:


Lambda参数的局部变量语法是否还不受支持,或者这是一个错误?

如果出现此错误,则很可能安装了Lombok插件。这是一个Lombok插件检查错误

禁用以下检查将解决此问题:

文件|设置|编辑器|可能的错误|龙目岛注释检查

也可以隐式抑制检查。

Lombok intellij插件项目中的问题已创建:


在修复问题之前,应该关闭Lombok注释检查


这不是一个真正的答案,但您为什么需要var呢?s->s.toLowerCase也应该起作用。或者甚至是方法引用。@M.Deinum String::toLowerCase更好,但随着人们开始转向Java 11,这个问题将变得流行。如果您阅读JEP,您将看到为lambda参数添加var的唯一真正原因是,您可以在不显式声明类型的情况下对其进行注释。如果你不使用任何注释,那么添加var有什么用?@AndrewTobilko如果你在这里需要var,这里就没有必要了。关键是它是一个合法的Java 11结构,而IntelliJ Lombok插件认为它不是。我将添加注释,使代码更有意义。
public static void main(String[] args) {
    System.out.println(List.of("AAA", "BBB", "CCC")
            .stream()
            .map((@NonNull var s) -> s.toLowerCase())
            .collect(Collectors.toList()));
}
[aaa, bbb, ccc]