"Feldinitialisierung" des Java-Tutorials, veröffentlicht unter https://docs.oracle.com/en/java/ .html) Ein kurzer Hinweis zu "Static Initialization Blocks", der häufig unter https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html abgefragt wurde. (Detaillierte Kommentare können geschrieben werden, wenn Sie Lust dazu haben)
Sie können einen Block mit static {....}
schreiben und dort die Initialisierung des statischen Feldes einfügen. Dies wird als statische Initialisierungsblöcke bezeichnet.
Der statische Initialisierungsblock ist ein Block, der vor dem Konstruktor ausgeführt wird.
Der statische Initialisierungsblock wird noch nicht ausgeführt, wenn die Klasse nur in der Deklaration verwendet wird.
Der statische Initialisierungsblock wird zuerst ausgeführt, wenn der Konstruktor oder die statische Methode der Klasse aufgerufen wird.
{....}
ohne statische Aufladung wird zu Blöcken (Initialisierungsblöcken) zur Initialisierung von Instanzfeldern. Dies wird auch vor dem Konstruktor ausgeführt.
Die Logik in Initialisierungsblöcken wird von jedem Konstruktor aufgerufen. Wenn also eine Konstruktorüberladung vorliegt, können Sie eine Logik einfügen, die für jeden Konstruktor dasselbe tut.
InitializationBlocksSample.java
public class InitializationBlocksSample {
final static int x;
int y;
// Static Initialization Blocks, it is called before first load.
static {
x=10;
System.out.println("Static Initialization Blocks");
}
// Initialization Blocks, it it called from all constructors.
{
y=10;
System.out.println("Initialization Blocks");
}
// constructor
public InitializationBlocksSample() {
System.out.println("non-parameter constructor");
}
public InitializationBlocksSample(String param) {
System.out.println("parameter constructor");
}
public static void staticMethod() {
System.out.println("staticMethod");
}
public void instanceMethod() {
System.out.println("instanceMethod");
}
}
Main.java
public class Main {
public static void main(String[] args) {
InitializationBlocksSample o;
System.out.println("start");
InitializationBlocksSample.staticMethod();
o = new InitializationBlocksSample();
o.instanceMethod();
InitializationBlocksSample p = new InitializationBlocksSample("parameter");
}
}
statisch verwandte Artikel: [Statische Java-Geschichte](https://qiita.com/b1ueskydragon/items/2a6e0812a9cee3fc255f#static-%E3%82%A4%E3%83%8B%E3%82%B7%E3% 83% A3% E3% 83% A9% E3% 82% A4% E3% 82% B6)
Recommended Posts