Variables et membres non initialisés en Java
Considérez l'extrait suivant :
public class TestClass { private String a; private String b; public TestClass() { a = "initialized"; } public void doSomething() { String c; a.notify(); // This is fine b.notify(); // This is fine - but will end in an exception c.notify(); // "Local variable c may not have been initialized" } }
Bien que "b" et "c" ne soient pas initialisés, le compilateur génère une erreur de compilation pour "c" mais pas pour "b". Cette différence provient des règles du langage pour l'initialisation des variables d'instance et des variables locales.
Les variables d'instance de type objet (comme "a" et "b") sont par défaut initialisées à null lorsqu'elles ne sont pas explicitement initialisées. C'est pourquoi l'accès à "b.notify()" n'entraîne pas d'erreur immédiate, car c'est effectivement équivalent à "null.notify()". Cependant, cet accès déclenchera à terme une NullPointerException lors de l'exécution du code.
En revanche, les variables locales de type objet ne sont pas initialisées par défaut. Tenter d'accéder à une variable locale non initialisée, telle que "c", entraîne directement une erreur de compilation. Cette exigence stricte garantit que les variables locales sont toujours correctement initialisées avant d'être utilisées.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3