A JVM não estipula quando carregar, geralmente quando usar essa classe, quando carregar, mas a JVM estipula quando deve ser inicializada (inicialização é o terceiro passo, carregamento, conexão, inicialização), desde que seja carregado, então deve ser Ele é inicializado, então podemos julgar se a classe foi carregada verificando se a classe foi inicializada.
O que aconteceu durante a inicialização?
Quando inicializado, ele chamará automaticamente o bloco de código estático para concluir o trabalho de inicialização. E atribuirá automaticamente valores iniciais a variáveis de membros estáticos.
Cinco casos de LazyLoading
As cinco situações a seguir:
nova instrução getstatic putstatic invokestatic, exceto para acessar variáveis finais
Quando java.lang.reflect faz uma chamada reflexiva para uma classe
Ao inicializar uma subclasse, a classe pai inicializa primeiro
Quando a máquina virtual inicia, a classe principal a ser executada deve ser inicializada
Quando a linguagem dinâmica suporta java.lang.invoke.MethodHandle e o resultado analisado é o manipulador de método de REF_getstatic REF_putstatic REF_invokestatic, esta classe deve ser inicializada
Código de validação preguiçoso
resultado:
pudermos