So verwenden Statische Initialisierer in Java

In Java können Sie verwenden initializer Blöcke Instanzvariablen zu initialisieren. Initializer Blöcke werden erst eine Instanz einer Klasse ausgeführt wird, erstellt, so dass Sie nicht auf sie zählen, um statische Felder zu initialisieren. Immerhin könnten Sie ein statisches Feld zugreifen, bevor Sie eine Instanz einer Klasse erstellen.

Java bietet eine Funktion ein genannt statische Initialisierer das ist speziell Sie initialisieren statische Felder zu lassen. Die allgemeine Form eines statischen Initialisierer sieht wie folgt aus:

statisch{Aussagen ...}

Wie Sie sehen können, ist eine statische Initialisierer zu einem Initialisierungsblocks ähnlich, aber beginnt mit dem Wort statisch. Wie bei einem Initialisierungsblocks, können Sie statische Initialisierer in der Klasse Körper codieren, aber außerhalb jeder anderen Block, wie der Körper einer Methode oder Konstruktor.

Das erste Mal, wenn Sie ein statisches Element zugreifen, wie beispielsweise einem statischen Feld oder eine statische Methode, alle statischen Initialisierungen in der Klasse ausgeführt werden - vorausgesetzt, dass Sie nicht bereits eine Instanz der Klasse erstellt. Das ist, weil die statischen Initialisierungen auch das erste Mal ausgeführt werden Sie eine Instanz erstellen. In diesem Fall werden die statischen Initialisierungen ausgeführt Vor der Konstruktor ausgeführt.

Wenn eine Klasse mehr als eine statische Initialisierer hat, werden die Initialisierungen in der Reihenfolge ausgeführt, in der sie im Programm erscheinen.

Hier ist ein Beispiel für eine Klasse, die eine statische Initialisierer enthält:

Klasse StaticInit {public static int x-static {x = 32 -} // andere Teilnehmer wie Konstrukteure und // Methoden gehen hier ...}

Dieses Beispiel ist ziemlich trivial. In der Tat können Sie den gleichen Effekt nur durch Zuweisung des Wertes erreichen 32 auf die Variable, wenn es erklärt. Wenn jedoch musste man eine komplizierte Berechnung durchzuführen, den Wert zu bestimmen, x - oder, wenn der Wert aus einer Datenbank kommt - eine statische Initialisierer könnte sehr nützlich sein.

Menü