Por que constantes de tempo de compilação podem se tornar estáticas em classes internas não estáticas?

Suponha que tenhamos o código abaixo.

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

Eu entendo instanciar objeto declasses internas não estáticas aobjeto da classe Outer é necessário. static significa classe relacionada e, para acessá-lo, um objeto não precisa ser instanciado. A classe interna não estática pode ser usada apenas quando instanciamos um objeto da classe Exterior. Ter referências estáticas pode não fazer sentido.

Minhas perguntas:

A classe interna não estática pode ser carregada sem nenhum objeto explícito da classe Outer?

Por quêcompilar constantes de tempo (Literais de string, como eles são tratados de maneira especial no pool de caracteres e nos tipos primitivos) podem ser feitosestático noclasse interna não estática ?

Edit: Por que não é possível permitir que constantes de tempo de não compilação sejam tornadas estáticas, eu sei como é por JLS, mas só quero sabero que teria dado errado, qual era a intenção de fazer essa regra.

questionAnswers(2)

yourAnswerToTheQuestion