最終的なpublic static intは、スイッチステートメントでは使用できませんか?

StackOverflow https://stackoverflow.com/questions/1155409

  •  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 (静的メソッド呼び出しのように見えるものではなく)コンパイラは文句を言いません。

他のヒント

君は それは 違う! :-)

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top