最終的なpublic static intは、スイッチステートメントでは使用できませんか?
-
18-09-2019 - |
質問
よくわかりません。次のコードにはエラーがあります( "..."はELIDEDコードを表します):
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
スイッチステートメントの場合の定数。私が間違っている???
解決
あなたが示したものから H5T_ORDER_BE
コンパイル時定数(必要な)ではなく、クラスの初期化中に実行時に評価されます。次のような定数に評価された場合 123
(静的メソッド呼び出しのように見えるものではなく)コンパイラは文句を言いません。
他のヒント
君は それは 違う! :-)
ケースステートメントは、定数のみを参照できます。静的変数は実行時に初期化されるため、ここでは使用できません。
所属していません StackOverflow