Maison >Java >javaDidacticiel >Pourquoi l'instruction « switch » de Java ne peut-elle pas utiliser des constantes non liées au temps de compilation ?
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;
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 :
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!