Поскольку o
уже является экземпляром типа Outer
, вам не нужно создавать другой экземпляр Outer
для создания экземпляра Inner
.Вторая опция, которую вы перечисляете, подразумевает, что вы создаете экземпляр другого внутреннего класса с именем Outer
внутри верхнего уровня Outer
, которого нет, и он выдаст ошибку.(Правка: только что заметил, что после o.new Outer
нет скобок, что заставляет меня думать, что вы, вероятно, рассуждали о моем втором абзаце).
Если вы имеете в виду, что Outer.Inner()
должен быть конструкторома не просто Inner()
, это потому, что Outer.Inner()
подразумевает Inner
статический внутренний класс.static
никогда не указывалось, поэтому вам необходим экземпляр Outer
.