Maison > Java > javaDidacticiel > Initialisation de variable d'instance en Java : déclaration ou constructeur ?

Initialisation de variable d'instance en Java : déclaration ou constructeur ?

Mary-Kate Olsen
Libérer: 2024-12-09 17:16:14
original
786 Les gens l'ont consulté

Instance Variable Initialization in Java: Declaration or Constructor?

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

Lors de la définition de variables d'instance dans une classe Java, doivent-elles être instanciées lors de la déclaration ou dans le constructeur? Examinons les avantages et les différences entre les deux approches.

Variante 1 : Déclaration avec initialisation

class A {
    B b = new B();
}
Copier après la connexion

Variante 2 : Déclaration sans initialisation

class A {
    B b;

    A() {
         b = new B();
    }
}
Copier après la connexion

Il n'y a pas Différence

D'un point de vue technique, il n'y a pas de différence pratique entre les deux approches. Le compilateur génère et insère automatiquement le code d'initialisation de la variable d'instance dans le(s) constructeur(s) de la classe.

Lisibilité

La variante 1, avec initialisation à la déclaration, est généralement considérée plus lisible. Il fournit une association claire entre la déclaration de variable et sa valeur initiale.

Gestion des exceptions

La variante 2, avec initialisation dans le constructeur, permet la gestion des exceptions. Si l'initialisation de la variable d'instance échoue, une exception peut être levée et l'objet reste non construit. La variante 1 n'offre pas cette fonctionnalité.

Bloc d'initialisation

En plus des approches de déclaration et de constructeur, Java prend également en charge l'utilisation de blocs d'initialisation. Ces blocs sont également transformés en code qui est placé dans le(s) constructeur(s) par le compilateur.

{
    a = new A();
}
Copier après la connexion

Initialisation paresseuse

Pour l'optimisation des performances, les développeurs peuvent opter pour une initialisation paresseuse. Dans cette approche, les variables d'instance ne sont pas initialisées avant leur premier accès :

ExpensiveObject o;

public ExpensiveObject getExpensiveObject() {
    if (o == null) {
        o = new ExpensiveObject();
    }
    return o;
}
Copier après la connexion

Injection de dépendances

Pour une meilleure gestion des dépendances, il est recommandé d'éviter d'utiliser le nouvel opérateur au sein des classes. Envisagez plutôt d'utiliser des frameworks d'injection de dépendances pour gérer l'instanciation et l'injection de dépendances.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal