Учитывая то, что я знаю любого типа статической функции программирования – я думал бы, что ответ является 'нет'. Однако наблюдение операторов как OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
заставляет меня задаться вопросом.
Да, в семантике статического
вложенного типа нет ничего, что могло бы помешать вам это сделать. Этот фрагмент работает нормально.
public class MultipleNested {
static class Nested {
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
new Nested();
}
}
}
открытый статический интерфейс Map.Entry
открытый статический класс AbstractMap.SimpleEntry
Теперь, конечно, вложенный тип может управлять своим собственным экземпляром (например, частными
конструкторами, одноэлементным шаблоном и т. Д.), Но это не имеет ничего общего с тем фактом, что это вложенный тип. Кроме того, если вложенный тип представляет собой статическое перечисление
, конечно, вы вообще не можете создать его экземпляр.
Но в целом да, вложенный тип static
может быть создан несколько раз.
Обратите внимание, что технически вложенный тип static
не является «внутренним» типом.
внутренний класс - это вложенный класс, который не объявлен явно или неявно
static
.
То есть, согласно терминологии JLS, внутренний класс - это не статический
класс. Если это статический
, то это просто вложенный тип.
Итак, что означает static
?
static
просто означает, что для создания экземпляра вложенного типа не требуется экземпляр включающего типа.
Это законно. Тот факт, что внутренний класс статичен, дает вам здесь преимущество; его экземпляры не привязаны к какому-либо экземпляру содержащего класса, поэтому они могут быть свободно созданы (если это позволяет квалификатор доступа).
Цена, однако, заключается в том, что внутренний класс не может использовать нестатические члены / методы содержащего класса.
Да, вы можете создавать его экземпляры столько раз, сколько ты хочешь.
Может быть, причина, по которой вы это видите, в том, что программа подумала о том, чтобы где-то сохранить ссылку. Хотя я согласен с вами, это кажется странным: S