2009-07-20 7 views
3

Я в замешательстве. Следующий код содержит ошибки («...» представляет Опущенные код):конечные общедоступные статические ints не могут использоваться в инструкции switch?

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

ошибка на сазе и Eclipse, жалуется на „случай выражения должны быть константными выражениями“. Я посмотрел в исходный файл для этого и имеет длинный список строк, как это:

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

я думал, что вы могли бы использовать final public static int константы как случаи в распределительном заявлении. Я ошибаюсь???

ответ

10

От того, что вы показали H5T_ORDER_BE, не является константой времени компиляции (какой она должна быть) - она ​​оценивается во время выполнения во время инициализации класса. Если он оценивается константой, такой как 123 (вместо того, что кажется статическим вызовом метода), компилятор не будет жаловаться.

7

Вы: Адрес: Неправильно! :-)

Операторы дела могут ссылаться только на константы. Статическая переменная инициализируется во время выполнения, поэтому ее здесь нельзя использовать.

 Смежные вопросы

  • Нет связанных вопросов^_^