finales ints statiques publics ne peuvent pas être utilisés dans une instruction switch?

StackOverflow https://stackoverflow.com/questions/1155409

  •  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 ???

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top