まず最初に述べておきますが、私は 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
ラベルを列挙型で修飾する必要はなく、その値だけで十分です。