初始化列表时出现 JShell 错误:"Expression expected"

JShell Error when initialize a list: "Expression expected"

我绝对是 Java 新手,刚开始学习 Java。我在 IntelliJ 中遇到了这个 JShell 功能,可以在其中编写一些快速代码而无需编写任何 class 结构。但是困扰我很长一段时间的问题是,当我初始化一个简单的 ArrayList 时,它似乎工作正常但它总是给我这个“预期的表达式”错误,它用红色下划线 List<Integer>

我在普通的 .java 文件中没有遇到这样的错误,但只在 JShell 中遇到过。

有谁知道为什么?非常感谢!

这是一个 IntelliJ 错误,例如 IDEA-221953 and IDEA-191768 中已报告。当泛型出现在代码片段中时,编辑器似乎不理解泛型(以及 var 等)。

请注意,如果您在方法中编写语句,则情况并非如此,

static void foo() {
    List<Integer> foo = new ArrayList<>();
    // ...
}
foo();

但当然,这违背了使用 JShell 的目的:(

运行 代码本身不受影响。您仍然可以通过按 cmd/ctrl + enter 运行 代码,它会按您预期的那样工作,尽管有所有红色波浪线。