Почему константы времени компиляции можно сделать статичными в нестатических внутренних классах?

Предположим, у нас есть код, как показано ниже.

public class Outer{
    class Inner{
        public static final String s = "abc";
    }
    static class Nested{
        public static final SomeOtherClass instance = new SomeOtherClass();
    }
} 

Я понимаю, чтобы создать объектнестатические внутренние классы нужен объект Outer класса. static означает связанный с классом и для доступа к нему объект не требуется создавать экземпляр. Нестатический внутренний класс можно использовать только после создания экземпляра объекта Outer. Наличие каких-либо статических ссылок в нем может не иметь смысла.

Мои вопросы:

Может ли не статический внутренний класс загружаться без какого-либо явного объекта класса Outer?

Зачемконстанты времени компиляции (Строковые литералы, так как они обрабатываются особым образом в пуле строк и примитивных типах) допускаетсястатический вне статичный внутренний класс ?

Изменить: Почему нельзя сделать статические постоянные времени не компилировать, я знаю, как в JLS, но просто хочу знать,что бы пошло не так, каково было намерение сделать это правило.

Ответы на вопрос(2)

Ваш ответ на вопрос