внутренний класс - это 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
.
OuterClass.InnerClass inerClass = new OuterClass.InnerClass();
Это означает, что InnerClass
является статическим (то есть не имеет this
ссылку на объект Outerlass
), и это означает, что это абсолютно то же самое (с точки зрения JVM), как два отдельных файла с class OuterClass
и class InnterClass
.