7

列挙型を定数式に変換する方法はありますか? スイッチ演算子で列挙型の値を選択したいのですが、「ケース式は定数式でなければなりません」というコンパイル エラーが発生したため、変数で宣言しようとしました。

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:

アンドレアのコメントを見るまで、私には思い浮かびませんでした。回答ありがとうございます。

4

2 に答える 2