1. ホーム
  2. java

[解決済み】Java:サブクラス下のenumでswitchステートメントを使用する

2022-02-14 21:30:05

質問

最初に断っておきますが、私はC#のenumの方がずっと慣れていて、javaのenumはかなり混乱しているように思えます。

ご覧のように、次の例ではswitch文@enumsを使おうとしていますが、何をやってもエラーになります。

私が受けたエラーは

修飾されたケースラベル SomeClass.AnotherClass.MyEnum.VALUE_A は、非限定列挙型定数 VALUE_A

そのことは、私 かなり エラーは理解できますが、enumが別のサブクラスにあるため、VALUE_Aを書くことができません。この問題を解決する方法はあるのでしょうか?また、なぜJavaでこのようなことが起こるのでしょうか?

//Main Class
public class SomeClass {

    //Sub-Class
    public static class AnotherClass {
        public enum MyEnum {
            VALUE_A, VALUE_B
        }    
        public MyEnum myEnum;
    }

    public void someMethod() { 
        MyEnum enumExample //...

        switch (enumExample) {
            case AnotherClass.MyEnum.VALUE_A: { <-- error on this line
                //..
                break;
            }
        }
    }
}

解決方法は?

このように変更してください。

switch (enumExample) {
    case VALUE_A: {
        //..
        break;
    }
}

ヒントはエラーの中にある。を修飾する必要はありません。 case ラベルに列挙されるのは、その値だけです。