So che il nuova, dup, invokespecial e astore modello bytecode richiamerà il metodo di istanza di inizializzazione <init>
quando esempio qualcuno una classe Java dal punto linguaggio Java di vista, ma non ho mai capire chi invocare il metodo speciale <clinit>
e quando succede?Chi invoca il metodo di inizializzazione della classe <clinit> e quando?
La mia ipotesi è che <clinit>
è stato invocato prima del metodo<init>
. Qualcuno può darmi qualche informazione per dimostrarlo? Questo è documentato nella specifica JVM o nella specifica del linguaggio Java?
"Si noti che viene aggiunto solo se una classe ha bisogno di inizializzazione statica" - qualsiasi origine per quello? –
siledh
viene dalla pratica (test) per essere onesti, anche il senso comune suggerisce lo stesso, certo c'è un paragrafo in JLS a riguardo –