• (Java) static nested class - это единственный объект или их может быть много?

    @Power
    Сам класс (мета-сущность - инстанс класса java.lang.Class<OuterClass.InnerStaticClass>) существует в единственном экземпляре, но это относится к любому классу (если не углубляться в класслоадеры). А вот инстансов класса OuterClass.InnerStaticClass можно сделать сколько угодно (на это влияет доступность конструкторов, как обычно):
    new OuterClass.InnerStaticClass();
    Единственное отличие внутреннего статического класса от внутреннего нестатического - ему не требуется инстанс окружающего класса для создания (ну и после создания он не имеет ссылки на этот самый инстанс окружающего класса):
    new OuterClass.InnerNonStaticClass(); // нельзя
    OuterClass o = new OuterClass();
    new o.InnerNonStaticClass(); // можно
    new OuterClass.InnerStaticClass(); // а в случае со статическим классом так можно

    Не путайте статический класс со статическими полями класса.
    Ответ написан
  • (Java) static nested class - это единственный объект или их может быть много?

    @bimeg
    Статик как раз и нужен чтобы не было ссылки на внешний класс.
    Если смотреть глобальнее то static значит "не нужен инстанс внешнего класса".
    Статическую филду\метод можно прочитать\вызвать не имея инстанса внешнего класса.
    Можно создать объект статического вложенного класса не имея инстанса внешнего класса.
    Ответ написан
    2 комментария