Maison > Java > javaDidacticiel > Pourquoi l'instruction « switch » de Java ne peut-elle pas utiliser des constantes non liées au temps de compilation ?

Pourquoi l'instruction « switch » de Java ne peut-elle pas utiliser des constantes non liées au temps de compilation ?

Susan Sarandon
Libérer: 2024-12-11 20:04:15
original
947 Les gens l'ont consulté

Why Can't Java's `switch` Statement Use Non-Compile-Time Constants?

Instruction Java switch : Comprendre l'exigence d'expression constante

En Java, les instructions switch nécessitent des expressions constantes pour les étiquettes de cas. Bien que des constantes telles que Foo.BAR puissent sembler constantes, elles ne sont pas considérées comme des constantes de compilation telles que définies par la spécification du langage Java (JLS). Selon JLS §15.28, une expression constante doit être connue au moment de la compilation.

Pourquoi Foo.BA_ n'est pas une constante au moment de la compilation :

Bien que Foo.BA_ les variables sont effectivement constantes après l'initialisation du champ, elles manquent d'initialiseurs constants au moment de la compilation. Pour créer des constantes au moment de la compilation, initialisez les variables explicitement avec des expressions constantes. Par exemple :

public static final int BAR = 1;
public static final int BAZ = 2;
public static final int BAM = 3;
Copier après la connexion

Alternatives aux instructions Switch :

Envisagez d'utiliser des énumérations au lieu de constantes int. Cependant, les énumérations imposent des contraintes supplémentaires, telles que l'exigence d'un cas par défaut même si l'instruction switch couvre toutes les valeurs d'énumération. De plus, les étiquettes de cas doivent être des valeurs d'énumération explicites plutôt que des expressions évaluées en valeurs d'énumération.

Restrictions sur les expressions constantes dans les instructions Switch :

Les expressions constantes utilisées dans les instructions switch ont limitations spécifiques :

  • Seuls les types primitifs et String sont autorisés.
  • Les primaires sont limitées à les littéraux, les variables constantes et les parenthèses autour des expressions constantes.
  • Les opérateurs sont autorisés à l'exception des opérateurs d'affectation, , -- ou instanceof.
  • Les transtypages de type ne sont autorisés que vers les types primitifs ou String.

En résumé, lorsque vous utilisez des instructions switch en Java, assurez-vous que les expressions dans les étiquettes de cas sont des constantes de compilation. Considérez les énumérations comme une alternative, mais soyez conscient de leurs restrictions uniques. Comprendre ces exigences améliorera la fiabilité et la clarté de votre code.

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