Java: サブクラス下の列挙型で switch ステートメントを使用する 質問する

Java: サブクラス下の列挙型で switch ステートメントを使用する 質問する

まず最初に述べておきますが、私は C# の列挙型にかなり精通していますが、Java の列挙型はかなり混乱しているようです。

ご覧のとおり、次の例では switch ステートメント @ enums を使用しようとしていますが、何をしても常にエラーが発生します。

受け取ったエラーは次のとおりです:

修飾されたケースラベルは、SomeClass.AnotherClass.MyEnum.VALUE_A修飾されていない列挙定数に置き換える必要があります。VALUE_A

問題は、エラーはよく理解しているのですが、列挙型が別のサブクラスにあるため、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;
            }
        }
    }
}

ベストアンサー1

次のように変更します。

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

ヒントはエラーにあります。caseラベルを列挙型で修飾する必要はなく、その値だけで十分です。

おすすめ記事