Да, в семантике вложенного типа static
нет ничего, что помешало бы вам сделать это. Этот фрагмент отлично работает.
public class MultipleNested {
static class Nested {
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
new Nested();
}
}
}
Смотри также
Теперь, конечно, вложенный тип может выполнять собственный контроль экземпляра (например, private
конструкторы, шаблон синглтона и т. Д.), Но это не имеет ничего общего с тем фактом, что это вложенный тип. Кроме того, если вложенный тип является static enum
, конечно, вы не можете создать его экземпляр вообще.
Но, как правило, да, вложенный тип static
может создаваться несколько раз.
Обратите внимание, что технически вложенный тип static
не является "внутренним" типом.
внутренний класс - это вложенный класс, который не объявлен явно или неявно static
.
То есть, согласно терминологии JLS, внутренний класс - это класс, который не static
. Если это static
, то это просто вложенный тип.
Так что же означает static
? 1057 *
static
просто означает, что для вложенного типа не требуется экземпляр экземпляра включающего типа.
Смотри также