当我创建内部类的实例时,我使用此代码。
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass inerClass = outerClass.new InnerClass();
但是我不了解outerClass.new InnerClass()
的工作原理,为什么我们像新的内部类一样使用.new
,我知道不是,但是我不了解语法。
答案 0 :(得分:2)
内部类是POJO。因此,当您查看目标目录时,会看到2(两个)类文件。 因此,要创建内部类的实例,请使用new。
OuterClass outerClass = new OuterClass(); // create instance
OuterClass.InnerClass inerClass = outerClass.new InnerClass(); // innerClass has `this` to outerClass instance
这意味着InnerClass
不是静态的(即this
引用了OuterClass
的对象),并且OuterClass
的实例应在其之前创建。 / p>
OuterClass.InnerClass inerClass = new OuterClass.InnerClass();
这意味着InnerClass
是静态的(即没有this
对Outerlass
的对象的引用),这意味着(从JVM的角度来看)这是绝对相同的,例如两个分别为class OuterClass
和class InnterClass
的文件。