"Field Initialization" du tutoriel Java publié sur https://docs.oracle.com/en/java/ .html) Une brève note sur les «blocs d'initialisation statiques» qui était souvent posée sur https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html. (Des commentaires détaillés peuvent être écrits si vous en avez envie)
Vous pouvez écrire un bloc en utilisant static {....}
et y placer l'initialisation du champ statique. C'est ce qu'on appelle les blocs d'initialisation statiques.
Le bloc d'initialisation statique est un bloc qui est exécuté avant le constructeur.
Le bloc d'initialisation statique n'est pas encore exécuté lorsque la classe est simplement utilisée dans la déclaration.
Le bloc d'initialisation statique est exécuté en premier lorsque le constructeur ou la méthode statique de la classe est appelé.
{....}
sans statique devient des blocs (blocs d'initialisation) pour l'initialisation des champs d'instance. Ceci est également exécuté avant le constructeur.
La logique dans les blocs d'initialisation est appelée à partir de n'importe quel constructeur, donc s'il y a une surcharge de constructeur, vous pouvez mettre une logique qui fait la même chose pour n'importe quel constructeur.
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");
}
}
articles statiques connexes: [histoire statique Java](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