Instruction Java Switch : exigence d'expression constante
Lors de l'utilisation d'une instruction switch en Java, les étiquettes de cas doivent être des expressions constantes. Cela signifie que l'expression doit être connue au moment de la compilation. Dans le code donné :
public static String lookup(int constant) { switch (constant) { case Foo.BAR: return "bar"; case Foo.BAZ: return "baz"; case Foo.BAM: return "bam"; default: return "unknown"; } }
Les erreurs du compilateur sur les étiquettes de cas car Foo.BAR, Foo.BAZ et Foo.BAM ne sont pas considérées comme des expressions constantes. Bien qu'ils soient déclarés comme constantes au sein de la classe, ils ne sont pas initialisés avec des valeurs spécifiques. Une expression constante nécessite une valeur qui peut être évaluée au moment de la compilation, comme un littéral ou une variable finale initialisée avec une constante au moment de la compilation.
Pour résoudre ce problème, les constantes Foo.BAR peuvent être initialisées avec valeurs constantes au moment de la compilation :
public abstract class Foo { public static final int BAR = 1; public static final int BAZ = 2; public static final int BAM = 3; }
Cela permettra à l'instruction switch de se compiler avec succès, car les étiquettes de cas seront désormais évaluées comme constantes expressions.
Alternativement, les constantes peuvent être déclarées sous forme d'énumération, ce qui permet d'obtenir un code plus propre et des constantes plus fortement typées. Cependant, les énumérations ont certaines restrictions, telles que l'exigence d'une casse par défaut et de valeurs d'énumération spécifiques comme étiquettes de casse.
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!