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

Why can IntelliJ detect missing semi-colons and Java compiler can't?

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

我想质疑你的前提,即 Java 编译器无法检测到丢失的分号。我刚刚尝试用来自 Oracle JDK 8 的 javac 编译以下代码,它完全能够检测到缺少的分号:

public class Test {
  public static void main(String... args) {
    System.out.println()
  }
}

打印的编译器错误如下:

Test.java:3: error: ';' expected
    System.out.println()
                        ^
1 error

如您所见,它不仅检测到丢失的分号,甚至能够准确指出哪里丢失了分号。