2009-07-20 11 views
3

私は混乱しています。次のコードは、エラーがある(「...」省略さコードを表す):final public static intsはswitch文で使用できません。

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

エラーがcase文にあり、Eclipseは 『ケース式は定数式でなければなりません』文句を言います。私は、このためのソースファイルで見て、それがこのような行の長いリストがあります:私はあなたがswitch文の例としてfinal public static int定数を使用すると考えていた

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

を。私が間違っている???

答えて

10

あなたが示したところからH5T_ORDER_BEはコンパイル時の定数ではありません。これは実行時にクラスの初期化時に評価されます。静的メソッド呼び出しと思われるものではなく、123のような定数に評価された場合、コンパイラは不平を言わないでしょう。

7

です。 :-)

ケースステートメントは定数のみを参照できます。静的変数は実行時に初期化されるため、ここでは使用できません。

関連する問題