2012-11-10 13 views
15

Kürzlich in vielen Programmen an ich gesucht habe, habe ich bemerktJava statische Code-Block

static { 
    //some code here 
} 

Ich suche nur für einige Informationen über diese besonders, ich Blöcke gewöhnt bin Code, der alles in Methoden oder einfach Klassen ist, setzt das einfach den gesamten Code innerhalb des Blocks mit einem statischen Modifikator, oder ist da noch etwas dran?

+0

Ich denke, Sie können es wie ein Konstruktor, aber für die Klasse, keine Instanzen der Klasse betrachten. Ich nehme zwar an, dass Sie mehrere statische Blöcke haben können, aber natürlich nur einen Konstruktor pro Klasse. –

Antwort

11

Dies könnte eine doppelte Frage von Static Initialization Blocks

Der statische Block einmal egal genannt werden wird nur, wie viele Objekte dieses Typs Sie erstellen.

+0

Garantiert JVM, dass der statische Block nur einmal pro Anwendungsdomäne ausgeführt wird? – AlexVPerl

+4

Der statische Block wird jedes Mal aufgerufen, wenn die Klasse geladen wird. Wenn mehrere Klassenladeprogramme vorhanden sind, die die Klasse laden, wird der Code mehrmals ausgeführt. –

+0

Wenn das Programm mehrmals startet, wird der statische Block mehrmals aufgerufen –

3

Der Code in einem statischen Block wird zuerst ausgeführt (z. B. vor dem Konstruktor), sobald die JVM Ihre Klasse geladen hat.

+0

Wäre dieser Code nicht von externen Klassen zugänglich? – Dan

+1

Hier ist die offizielle Erklärung von Oracle http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html –

1

Statische Blöcke werden einmal aufgerufen (auf Klassenebene) und gehören nicht zu einer bestimmten Instanz.

finden Sie weitere Informationen (mit guten Beispielen) here, oder in der official oracle documentation.