用于创建内部类的新实例的Java语法的起源?

Uri*_*Uri 12 java syntax inner-classes

我很好奇在Java中给定外部类的实例来实例化内部类的语法选择.

语法是:

OuterClass.InnerClass innerObject = outerObject.new InnerClass();
Run Code Online (Sandbox Code Playgroud)

但为什么不呢:

OuterClass.InnerClass innerObject = new outerObject.InnerClass(); 
Run Code Online (Sandbox Code Playgroud)

前者似乎暗示new是直接与类关联的方法或操作符,但我的理解是不是这种情况(与C++不同)?

Jon*_*eet 9

后者会向我暗示类型名称是outerObject.InnerClass- 而实际上,typename只是InnerClass(或者OuterClass.InnerClass,也是合法的)被引用的实例相关地构造outerObject.

就个人而言,我不喜欢Java首先嵌套类的方式,我同意它看起来有点奇怪,但我可以看出它为什么这样做.