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 ?
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.
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
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.
不是说接口中的成员变量都是常量吗
请问这句话从哪里听来的?常量需要使用
static final
Modification, et la valeur initiale doit être donnée