Je pense que ça fait du bien maintenant, mais je ne le savais pas, c'est donc mon propre mémo. Je l'oublierai bientôt.
Par exemple
public class SwitchTest {
static final String ddd = "ddd";
static String ccc = "ccc";
public static void main(String[] args) {
String bbb = "bbb";
final String eee = "eee";
switch(args[0]) {
case "aaa":
System.out.println("aaa");
break;
case bbb:
System.out.println("bbb");
break;
case ccc:
System.out.println("ccc");
break;
case ddd:
System.out.println("ddd");
break;
case eee:
System.out.println("eee");
break;
default:
System.out.println("default");
break;
}
}
Supposons que vous écriviez le code. Cependant, cela entraîne une erreur de compilation. Au fait, l'erreur suivante apparaît.
SwitchTest.java:14:Erreur:Nécessite une expression de chaîne constante
case bbb:
^
SwitchTest.java:17:Erreur:Nécessite une expression de chaîne constante
case ccc:
^
Bref, il semble que la chaîne de caractères à mettre dans la casse doit être une "constante" (une clause finale est requise).
En fait, ddd ( statique final '') et eee (
final '') ne sont pas extraits comme des erreurs de compilation.
De plus, si vous écrivez une chaîne de caractères directement dans le cas ("aaa"
), elle sera traitée comme une "constante" ici et ne sera pas extraite comme une erreur de compilation.
Eh bien, ce n'est pas une "variable". ..
Puisque la sortie renvoyée comme une erreur de compilation est utilisée telle quelle, le mot-clé "constante" est affiché, mais pour être précis, est-ce le nom "constante"? Expression? Cela ne semble pas être le cas. Cette zone est décrite dans ici. Puisqu'il s'agit d'une expression constante, est-il correct de dire «expression constante» en japonais? Par exemple, selon cela, l'opération utilisant `` + '' semble être une "expression constante".
...
case "aaa" + "xxx":
System.out.println("aaa+xxx");
break;
...
Cela compile également.
Cependant, si vous utilisez une variable qui n'a pas final comme cible de jointure (par exemple, bbb mentionné ci-dessus) et faites "aaa" + bbb
, vous obtiendrez une erreur de compilation.
Je ne le savais pas jusqu'à présent car je n'utilisais pas très souvent l'instruction switch comme chaîne de caractères. J'ai beaucoup appris. (?)