我只是随机尝试查看是否new String();可以编译并且它确实可以编译(因为根据 Oracle 的 Java 文档“表达式、语句和块”,有效的语句类型之一是“对象创建”),
但是,new int[0];给了我一个“不是声明”的错误。
这有什么问题?我不是在创建一个数组对象new int[0]吗?
编辑:
为了澄清这个问题,以下代码:
class Test {
void foo() {
new int[0];
new String();
}
}
Run Code Online (Sandbox Code Playgroud)
在 上导致编译器错误new int[0];,而new String();其本身没有问题。为什么一个不可接受而另一个很好?