Domanda

Sono confuso. Il seguente codice contiene errori ( "..." rappresenta il codice elisa):

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

L'errore è sulla dichiarazione caso ed Eclipse si lamenta "espressioni case devono essere espressioni costanti". Ho guardato nel file sorgente per questo e ha una lunga lista di linee come questa:

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

Ho pensato che si potrebbe usare le costanti final public static int come casi di un'istruzione switch. Mi sbaglio ???

È stato utile?

Soluzione

Da quello che hai mostrato H5T_ORDER_BE non è una costante della fase di compilazione (che ha bisogno di essere) - è valutato in fase di esecuzione durante l'inizializzazione della classe. Se valutato come un costante come 123 (piuttosto che quello che sembra essere una chiamata di metodo statico), allora il compilatore non si lamenterebbe.

Altri suggerimenti

sono sbagliato! :-)

dichiarazioni di caso possono fare riferimento solo alle costanti. Una variabile statica viene inizializzata in fase di esecuzione, pertanto non può essere utilizzato qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top