【发布时间】:2019-06-20 07:17:04
【问题描述】:
当我创建内部类的实例时,我使用了这段代码。
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass inerClass = outerClass.new InnerClass();
但我不明白outerClass.new InnerClass() 是如何工作的,为什么我们使用.new 就像新的内部类一样,我知道不是,但我不明白语法。
【问题讨论】:
-
内部类的实例隐式引用其所有者类实例。如果你只是使用
new OuterClass.InnerClass(),编译器怎么知道将哪个外部类实例传递给内部类实例?因此,Java 设计者必须决定一种语法,允许在新建内部类时指定外部类实例,这就是他们选择的语法。您在实践中很少使用该语法,因为内部实例通常是从外部类的方法/构造函数创建的。 -
查看这个 oracle 文档,你会得到清晰的概念。 (docs.oracle.com/javase/tutorial/java/javaOO/nested.html)
标签: java