列挙型を定数式に変換する方法はありますか? スイッチ演算子で列挙型の値を選択したいのですが、「ケース式は定数式でなければなりません」というコンパイル エラーが発生したため、変数で宣言しようとしました。
final int REG = MyEnum.REG.getIndex().intValue();
switch (service.getIndex()) {
case REG:
しかし、私はまだ同じエラーが発生します。Oracleのドキュメントによるとhttp://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28
コンパイル時の定数式は、プリミティブ型の値を示す式、または突然完了しない String であり、以下のみを使用して構成されます。
•プリミティブ型のリテラルと文字列型のリテラル
リテラルを使用していないため、機能していません。次のように宣言する必要があると思います。
final int REG = 8;
しかし、それを列挙型にリンクする方がはるかに良いでしょう。これを行う方法はありますか?
編集
最終変数を使用する必要がないことがわかりました。次のように簡単です。
switch (service) {
case REG:
アンドレアのコメントを見るまで、私には思い浮かびませんでした。回答ありがとうございます。