Un processus qui est exécuté une fois avant d'utiliser une instance de classe. Utilisé lors de l'initialisation des variables de classe.
class initializer_demo {
//Initialiseur de classe
static {
//En traitement
}
//Initialiseur d'instance
{
//En traitement
}
}
Lorsque vous pensez au processus d'instanciation, le constructeur vient à l'esprit, La différence est que l'initialiseur d'instance est exécuté avant le constructeur et la construction est exécutée après l'instanciation. Lorsqu'il y a plusieurs constructeurs surchargés, l'initialiseur semble être utilisé en exécutant d'abord un traitement commun.
Code de référence ci-dessous
class User {
private String name;
public static int count;
//Initialiseur de classe
static {
User.count = 0;
System.out.println("Exécution de l'initialiseur de classe\n↓");
}
//Initialiseur d'instance
{
System.out.println("Exécution de l'initialisation d'instance\n↓");
}
//Constructeur
public User(String name) {
this.name = name;
User.count++;
System.out.println("Exécution du constructeur\n↓");
}
//Méthode de classe
public static void getInfo() {
System.out.println(User.count + "Temps instanciés\n↓");
}
}
public class MyApp {
public static void main(String[] args) {
User.getInfo();
User ryo = new User("ryo");
User.getInfo();
User yu = new User("yu");
User.getInfo();
}
}
Résultat d'exécution
$ java Myapp
Exécution de l'initialiseur de classe
↓
Instancié 0 fois
↓
Exécution de l'initialisation d'instance
↓
Exécution du constructeur
↓
Instancié une fois
↓
Exécution de l'initialisation d'instance
↓
Exécution du constructeur
↓
Instancié deux fois
↓
Recommended Posts