Maison > Questions et réponses > le corps du texte
switch (from) {
case TAGs.casts://constant expression required
break;
}
//我的TAGs.casts是这样的
public interface TAGs {
String casts = String.class.getSimpleName();
}
//如果写成这个样子就可以编译
public interface TAGs {
String casts = "String";
}
N'est-il pas dit que les variables membres de l'interface sont toutes des constantes ? Pourquoi ne puis-je pas utiliser l'invite pour exiger des constantes sur le cas ?
滿天的星座2017-06-23 09:15:11
Lorsque vous utilisez une interface, vous devez attribuer une valeur initiale à la constante. Si vous l'écrivez vous-même sans donner de valeur initiale, elle doit être fausse.
習慣沉默2017-06-23 09:15:11
Le cas dans switch doit déterminer la valeur au moment de la compilation, et String.class.getSimpleName(); doit être connu au moment de l'exécution (bien qu'il s'agisse effectivement d'une constante au moment de l'exécution), donc la compilation ne peut pas réussir
过去多啦不再A梦2017-06-23 09:15:11
En effet. L’un est requis au moment de la compilation et l’autre est au moment de l’exécution (les méthodes de réflexion sont toutes au moment de l’exécution). J'ai déjà mal répondu - lorsque j'ai regardé Java efficace, il a été modifié par static final. Il contient également une suggestion, veuillez utiliser la classe d'énumération pour exporter des constantes.
大家讲道理2017-06-23 09:15:11
不是说接口中的成员变量都是常量吗
请问这句话从哪里听来的?
常量需要使用static final
Modification, et la valeur initiale doit être donnée