Mögliches Duplikat:
Statische Initialisierungsblöcke
Betrachten Sie den folgenden Code:
public class Test {
{
System.out.println("Empty block");
}
static {
System.out.println("Static block");
}
public static void main(String[] args) {
Test t = new Test();
}
}
Wir verstehen, dass zuerst der Block static ausgeführt wird, gefolgt vom Block empty. Aber das Problem ist, dass ich nie in der Lage war, den wahren Nutzen eines leeren Blocks zu verstehen. Kann jemand ein reales Beispiel zeigen, in dem -
Sie dienen zwei sehr unterschiedlichen Zwecken:
Beachten Sie, dass diese Frage im Stapelüberlauf oft beantwortet wurde und Sie die ähnlichen Fragen und ihre Antworten gut durchsuchen und überprüfen sollten. Zum Beispiel: statische Initialisierungsblöcke
Der statische Block wird ausgeführt, wenn Ihre Klasse geladen wird. Der leere Block wird immer dann ausgeführt, wenn Sie Ihre Klasse instanziieren. Vergleichen Sie diese:
1.
public static void main(String[] args) {
Test t = new Test();
}
2.
public static void main(String[] args) {
}
Ausgänge:
1.
Statischer Block
Leerer Block
2.
Statischer Block
In Laienwörtern wird der statische Block nur einmal aufgerufen, unabhängig davon, wie viele Objekte dieses Typs Sie erstellen.