Outer.Inner
использует Inner
без связи с экземпляром включающего класса?
В некотором смысле, да, потому что Outer.Inner
относится к типу .И вам никогда не нужны экземпляры для использования типов .
Я думаю, вы ошибочно полагали, что Outer.Inner
не должен работать, потому что существует бесконечное количество различных типов, называемых Inner
,создан с разными экземплярами Outer
.Возможно, вы подумали, что если у меня есть два разных экземпляра Outer
, o1
и o2
, они создадут разные Inner
типы .
Но это совсем не такправда.Вы можете сделать что-то вроде этого:
Outer o1 = new Outer();
Outer o2 = new Outer();
Outer.Inner inner1 = o1.new Inner();
Outer.Inner inner2 = o2.new Inner();
inner2 = inner1;
Так что Outer.Inner
это просто один тип.Так уж получилось, что для создания экземпляра этого типа требуется экземпляр Outer
, чтобы его можно было создать.