먼저 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;
}
}
}
}
IntelliJ 2018.2에서 클래스를 리팩토링 (이동)하는 동안 이런 일이 일어났습니다.
—
Daniel Alder
Enum
는 일단 혼란스러워하지 않으면 매우 편리합니다. 다른 플랫폼에서 볼 수 있듯이 단순한 열거 형 (단순히 레이블이 지정된 정수 값)보다 훨씬 유연하고 실용적입니다. Oracle Tutorial을 참조하십시오 . 최적화 된Set
/Map
구현을 발견하십시오 :EnumSet
&EnumMap
.