Статический вложенный класс имеет доступ к частному конструктору внешнего класса

указано, что:

Статический вложенный класс взаимодействует с членами экземпляра его внешнего класса (и других классов), как и любой другой класс верхнего уровня. В эффект, статический вложенный класс поведенчески является классом верхнего уровня, который был вложен в другой класс верхнего уровня для удобства упаковки.

Итак, как объяснить, что этот статический вложенный класс имеет доступ к закрытому конструктору своего охватывающего класса?

Ответы

Ответ 1

Итак, как объяснить, что этот статический вложенный класс имеет доступ к закрытому конструктору своего охватывающего класса?

Поскольку область видимости и доступность любого члена private (поле, конструктор или метод) является полным телом класса объявления, включая любые вложенные классы.

Из раздела Спецификация языка Java 6.6.1:

если член или конструктор объявлен private, тогда доступ разрешен тогда и только тогда, когда он встречается внутри тела класса верхнего уровня (§7.6), который включает объявление члена или конструктора.