2012-11-10 20 views
15

Recentemente in un sacco di programmi che ho stato a guardare, ho notatoJava statica del codice di blocco

static { 
    //some code here 
} 

Sto solo cercando qualche informazione su questo particolare, sono abituato a blocchi di codice tutto essendo in metodi, o semplicemente classi, questo semplicemente imposta tutto il codice all'interno del blocco con un modificatore statico, o c'è qualcosa di più ad esso?

+0

Immagino che si possa considerare come un costruttore, ma per la classe, non per tutte le istanze della classe. Anche se suppongo tu possa avere più blocchi statici, ma ovviamente un solo costruttore per classe. –

risposta

11

Questa potrebbe essere una domanda duplicato Static Initialization Blocks

Il blocco statico unica viene chiamato una volta, non importa quanti oggetti di quel tipo si crea.

+0

JVM garantisce che il blocco statico verrà eseguito solo una volta per dominio dell'applicazione? – AlexVPerl

+4

Il blocco statico viene chiamato ogni volta che viene caricata la classe. Se ci sono più classloader che caricano la classe, il codice viene eseguito più volte. –

+0

se il programma si avvia più volte, il blocco statico viene chiamato più volte anche –

3

Il codice all'interno di un blocco statico viene eseguito per primo (ad es. Prima del costruttore) una volta che la JVM carica la classe.

+0

Questo codice potrebbe essere inaccessibile da classi esterne? – Dan

+1

Ecco la spiegazione ufficiale da Oracle http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html –

1

I blocchi statici vengono richiamati una volta (a livello di classe) e non appartengono a un'istanza specifica.

è possibile trovare ulteriori informazioni (con buoni esempi) here o nello official oracle documentation.

Problemi correlati