Maison >Java >javaDidacticiel >Initialisation de variable d'instance en Java : déclaration ou constructeur – Quel est le meilleur ?

Initialisation de variable d'instance en Java : déclaration ou constructeur – Quel est le meilleur ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 18:40:14768parcourir

Instance Variable Initialization in Java: Declaration vs. Constructor – Which is Better?

Initialisation des variables d'instance : déclaration ou constructeur

Lors de l'initialisation des variables d'instance en Java, il existe deux approches courantes :

  1. Initialisation de la variable d'instance sur Déclaration

    class A {
        B b = new B();
    }
  2. 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn