Maison >Java >javaDidacticiel >Initialisation de variable d'instance en Java : déclaration ou constructeur – Quel est le meilleur ?
Initialisation des variables d'instance : déclaration ou constructeur
Lors de l'initialisation des variables d'instance en Java, il existe deux approches courantes :
Initialisation de la variable d'instance sur Déclaration
class A { B b = new B(); }
Initialisation de la variable d'instance dans le constructeur
class A { B b; A() { b = new B(); } }
Y a-t-il un avantage pour l'une ou l'autre approche ?
Alors que le compilateur Java traite les deux approches de la même manière, certaines considérations doivent être prises en compte :
Ordre d'initialisation :
Les deux approches initialisent les variables d'instance dans l'ordre dans lequel elles sont déclarées dans le code.
Lisibilité :
La première approche (initialisation sur déclaration) est généralement considérée comme plus lisible.
Gestion des exceptions :
Dans la deuxième approche (initialisation dans le constructeur), la gestion des exceptions est possible. Si l'initialisation génère une exception, la création de l'objet échouera.
Bloc d'initialisation :
En plus des approches ci-dessus, il existe un bloc d'initialisation, qui est également placé dans le constructeur par le compilateur.
{ a = new A(); }
Meilleur Pratiques :
En général, il est recommandé d'initialiser les variables d'instance lors de la déclaration, sauf s'il existe un besoin spécifique de gestion des exceptions ou d'initialisation paresseuse. Lorsque vous travaillez avec des dépendances, il est préférable d'éviter d'utiliser directement l'opérateur new et d'opter plutôt pour l'injection de dépendances.
Exemple :
Si vous avez un ExpensiveObject coûteux pour initialiser, vous pouvez utiliser l'initialisation paresseuse pour améliorer les performances :
ExpensiveObject o; public ExpensiveObject getExpensiveObject() { if (o == null) { o = new ExpensiveObject(); } return o; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!