statische Initialisierungsblöcke verstehen
In Java bieten statische Initialisierungsblöcke einen speziellen Mechanismus zur Initialisierung statischer Felder innerhalb einer Klasse. Statische Felder werden nur einmal initialisiert und teilen den gleichen Wert in allen Fällen einer Klasse. Während es möglich ist, statische Felder in ihren Erklärungen Werte zuzuweisen, gibt es bestimmte Szenarien, in denen dieser Ansatz unpraktisch ist.
Warum sollten statische Initialisierungsblöcke verwendet werden? Stellen Sie sich beispielsweise vor, Sie haben ein Feld, das eine Liste von Datenbankverbindungen darstellt, die basierend auf den Konfigurationseinstellungen initialisiert wurden. Sie können dieses Feld nicht direkt in seiner Erklärung initialisieren, da die Konfiguration noch nicht verfügbar ist.
In solchen Fällen kommen statische Initialisierungsblöcke ins Spiel. Diese Blöcke werden während der Klassenbelastung ausgeführt und bieten eine bequeme Möglichkeit, statische Felder basierend auf dem aktuellen Kontext zu initialisieren. Sie sind in statische lockige Klammern eingeschlossen:public statischer Klassen -Test { statisch { // hier statische Felder initialisieren } }
public static class Test { static { // Initialize static fields here } }
im Gegensatz zu statischen Initialisierungsblöcken werden nicht statische Blöcke (auch als Instanzinitialisierungsblöcke bezeichnet) jedes Mal ausgeführt, wenn eine Instanz der Klasse erstellt wird. Sie werden verwendet, um instanzspezifische Felder zu initialisieren oder andere Setup-Operationen auszuführen.
example
um den Unterschied zwischen statischen und nicht statischen Blöcken zu veranschaulichen, betrachten Sie den folgenden Code:
öffentlicher Klassen test {{{& ntest {& na statisch { System.out.println ("statischer Block einmal ausgeführt"); } { System.out.println ("Nichtstatischer Block, der jedes Mal ausgeführt wird, wenn eine Instanz erstellt wird"); } public static void main (String [] args) { Test t1 = neuer test (); // nicht statischer Block ausgeführt Test t2 = neuer test (); // nicht statischer Block erneut ausgeführt } }Wenn Sie diesen Code ausführen, sehen Sie die folgende Ausgabe:
public class Test { static { System.out.println("Static block executed once"); } { System.out.println("Non-static block executed each time an instance is created"); } public static void main(String[] args) { Test t1 = new Test(); // Non-static block executed Test t2 = new Test(); // Non-static block executed again } }statischer Block einmal ausgeführt Nicht statischer Block, der jedes Mal ausgeführt wird, wenn eine Instanz erstellt wird Nicht statischer Block, der jedes Mal ausgeführt wird, wenn eine Instanz erstellt wird
Wie Sie beobachten können, wird der statische Block nur einmal während des Ladens der Klasse ausgeführt, während der nicht statische Block jedes Mal ausgeführt wird, wenn eine Instanz der Klasse erstellt wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3