Можно ли использовать нестатический тип члена без связи с экземпляром включающего класса? - PullRequest
2 голосов
/ 24 мая 2019

Можно ли использовать нестатический тип элемента без связи с экземпляром включающего класса?

Например

class Outer {    
    class Inner {       

    }    
}

public class Demo {
    public static void main(String args[]) {

        Outer o = new Outer();
        Outer.Inner inner = o.new Inner();    

    }    
}

В Outer.Inner inner = o.new Inner(), Outer.Inner использует Inner без связи с экземпляром включающего класса?

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

Спасибо

1 Ответ

2 голосов
/ 24 мая 2019

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, чтобы его можно было создать.

...