finales ints statiques publics ne peuvent pas être utilisés dans une instruction switch?
-
18-09-2019 - |
Question
Je suis confus. Le code suivant contient des erreurs ( "..." représente le code élidée):
int byteOrder = ...;
switch (byteOrder)
{
case HDF5Constants.H5T_ORDER_BE:
return ByteOrder.BIG_ENDIAN;
...
}
L'erreur est sur la déclaration de cas et Eclipse se plaint « expressions de cas doivent être des expressions constantes ». J'ai regardé dans le fichier source pour cela et il a une longue liste de lignes comme celle-ci:
final public static int H5T_ORDER_BE = H5.J2C( JH5T_ORDER_BE );
Je pensais que vous pouvez utiliser des constantes de final public static int
comme des cas dans une instruction switch. Ai-je tort ???
La solution
D'après ce que vous avez montré H5T_ORDER_BE
n'est pas une constante de compilation (ce qui doit être) - il est évalué lors de l'exécution lors de l'initialisation de la classe. Si elle a évalué à une constante telle que 123
(plutôt que ce qui semble être un appel de méthode statique), le compilateur ne se plaindrait pas.
Autres conseils
sont mal! :-)
déclarations de cas peuvent se référer uniquement à des constantes. Une variable statique est initialisé lors de l'exécution, il ne peut pas être utilisé ici.