"static"
в этом случае может вводить в заблуждение. На самом деле это означает, что класс может существовать независимо. Нестатические внутренние классы не могут существовать без экземпляра окружающего класса.
IMO, когда вы начинаете использовать внутренний класс вне класса, в котором он находится, вам нужно подумать о том, чтобы переместить его и сделать его собственным классом верхнего уровня. Очень мало случаев, когда отношения между классами настолько тесно связаны, что вам нужно сохранить их как внутренний класс.
В вашем примере кода:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
Вы создаете автономный экземпляр StaticNestedClass.
Если бы он не был статичным, вы бы не смогли этого сделать. Вы можете создавать экземпляры StaticNestedClass()
только из экземпляра OuterClass
.
Если вы переместили его в собственный файл .java, вы могли бы обработать его почти одинаково:
StaticNestedClass notNestedAnymore = new StaticNestedClass();
Что касается вашего реального вопроса: зачем вам создавать его экземпляр? По той же причине, по которой вы создаете экземпляры любого класса - он выполняет какую-то часть работы, которая вам нужна.