为什么 IntelliJ 可以检测丢失的分号而 Java 编译器不能?

-2 java compiler-construction intellij-idea

我想知道为什么会这样。IntelliJ 如何以及为什么能够检测到丢失的分号而 Java 编译器不能?是否存在 IntelliJ 错误且无法实际检测丢失分号的情况?我阅读了讨论 C 和 C++ 的类似问题,有些指针使事情复杂化,但 Java 在这方面似乎更简单。

Jör*_*tag 5

我想挑战您的前提,即 Java 编译器无法检测到丢失的分号。我只是尝试使用javacOracle JDK 8编译以下代码,它完全能够检测到丢失的分号:

public class Test {
  public static void main(String... args) {
    System.out.println()
  }
}
Run Code Online (Sandbox Code Playgroud)

打印的编译器错误如下:

Test.java:3: error: ';' expected
    System.out.println()
                        ^
1 error
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它不仅检测缺少的分号,它甚至能够指出究竟在那里它缺少。