Pregunta

Estoy confundido. El siguiente código tiene errores ("..." representa el código Elidido):

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

El error está en la declaración de caso y Eclipse se queja "Las expresiones de caso deben ser expresiones constantes". Busqué en el archivo fuente para esto y tiene una larga lista de líneas como esta:

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

Pensé que podrías usar final public static int constantes como casos en una declaración de conmutación. ¿¿¿Me equivoco???

¿Fue útil?

Solución

De lo que has mostrado H5T_ORDER_BE no es una constante de tiempo de compilación (que debe ser): se evalúa en tiempo de ejecución durante la inicialización de la clase. Si se evaluó a una constante como 123 (en lugar de lo que parece ser una llamada de método estático), entonces el compilador no se quejaría.

Otros consejos

son ¡equivocado! :-)

Las declaraciones de casos solo pueden referirse a constantes. Una variable estática se inicializa en tiempo de ejecución, por lo que no se puede usar aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top