java - Pourquoi les variables membres de l'interface ne sont-elles pas des constantes?
phpcn_u1582
phpcn_u1582 2017-06-23 09:13:11
0
4
849
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 ?

phpcn_u1582
phpcn_u1582

répondre à tous(4)
滿天的星座

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

过去多啦不再A梦

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 finalModification, et la valeur initiale doit être donnée

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal