Как работает создание экземпляра внутреннего класса? - PullRequest
2 голосов
/ 20 июня 2019

Когда я создаю экземпляр внутреннего класса, я использую этот код.

OuterClass outerClass = new OuterClass();
OuterClass.InnerClass inerClass = outerClass.new InnerClass();

Но я не понимаю, как работает outerClass.new InnerClass(), почему мы используем .new, как новый его внутренний классЯ понимаю, что это не так, но я не понимаю синтаксис.

1 Ответ

2 голосов
/ 20 июня 2019

внутренний класс - это 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...