列挙型を定数式に変換する方法はありますか? は、私は私のスイッチオペレータが列挙型の値の中から選択したいが、私は、コンパイルエラー「ケース式は定数式でなければなりません」となったので、私は変数にそれを宣言しようとした:列挙型の定数式
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
によると、コンパイル時定数式は、プリミティブ型、または急に完了しない文字列の値 を表す表現であり、唯一の次使用 に構成されていますリテラル•
をプリミティブ型と文字列型のリテラルの比較
リテラルを使用していないため、動作しません。私はそれを次のように宣言しなければならないと思う:
final int REG = 8;
しかし、それを列挙型にリンクするほうがずっと良いだろう。これを行う方法はありますか?
EDIT
は私が最終的な変数を使用する必要はありませんが判明します。
switch (service) {
case REG:
Andreaさんのコメントが表示されるまで私には起こりませんでした。あなたの答えをありがとう。
私は 'service.getIndexは()' '整数を返すことを前提としてい'、そう?あなたの列挙を返すようにそれを修正できますか? –
Java 1.6までは 'switch-case'で' String'を使うことはできませんが、Java 7で使うことができます。FYI – Joshi