In un article sul linguaggio ricontrollato bloccaggio, ho trovato questa citazione:inizializzazione differita gratuitamente
Un caso particolare di inizializzazione differita che funziona come previsto senza sincronizzazione è singleton statico. Quando l'oggetto inizializzato è un campo statico di una classe senza altri metodi o campi, la JVM esegue automaticamente l'inizializzazione pigra automaticamente.
Perché la parte enfatizzata è importante? Perché non funziona se ci sono altri metodi o campi?
(L'articolo è già più di 10 anni. L'informazione è ancora attuale?)
+1 domanda interessante. Inizialmente la mia ipotesi sarebbe stata quella che è l'unica volta in cui la JVM può essere certa che non ci sarà una chiamata su quell'oggetto prima che venga referenziato dall'esterno della classe; ma questo non sembra illuminare nulla. –