Pergunta

Estou confuso. O código a seguir possui erros ("..." representa o código Elided):

int byteOrder = ...;
switch (byteOrder)
{
    case HDF5Constants.H5T_ORDER_BE:
        return ByteOrder.BIG_ENDIAN;
    ...
}

O erro está na instrução CASE e o Eclipse reclama "Expressões de casos devem ser expressões constantes". Eu olhei no arquivo de origem para isso e ele tem uma longa lista de linhas como esta:

final public static int H5T_ORDER_BE = H5.J2C( JH5T_ORDER_BE );

Eu pensei que você poderia usar final public static int constantes como casos em uma declaração de interruptor. Estou errado???

Foi útil?

Solução

Do que você mostrou H5T_ORDER_BE não é uma constante de tempo de compilação (que precisa ser) - é avaliada em tempo de execução durante a inicialização da classe. Se avaliado para uma constante como 123 (em vez do que parece ser uma chamada estática de método), o compilador não reclamaria.

Outras dicas

Você são errado! :-)

As declarações de caso podem se referir apenas a constantes. Uma variável estática é inicializada em tempo de execução, para que não possa ser usada aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top