enums를 스위치에 있는 사용할 때, 추측하는 것이 거의 자연적 이다 일정한 스위치 같이 이용될 것이라는 점을. 불행히도 enums를 수용하기 위하여, 자바는 그것의 명세를 강화해야 하고 스위치에 있는 enums는 뜻깊은 2와 사소하지 않은 방법에 있는 일정한 스위치 계산서와 다르게 행동한다.

일요일의 Javac는 밝힌다 - "enum 스위치 케이스 상표는 열거 불변의 것의 자격이 없는 이름이어야 한다. 그것의 비밀 착오 알림말에서. 그것은 아마 많은 것에 프랑스어 이다. 나는 이 계산서를 이해해 나가 거친 시간을 보냈다는 것을 알고 있다.

따라서 간단한 예에 이것을 이해하자:

스위치 (UserAgent.FIREFOX) {
    케이스 (UserAgent.IE):
        실패 (UserAgent.IE.to 끈 () + "unexpected.");
}

이것은 명백하게 정확하게 그것 보는가? 불행히도 2가지의 다른 방법으로 틀리다.
첫째로 케이스는 부류 없이 이어야 한다. 그러나 UserAgent.IE 아닙니다 이차적으로 IE만 이용되어야 한다. 간단한 (정확한) 보기를 가진 위 점의 둘 다 설명하자:

스위치 (UserAgent.FIREFOX) {
    케이스 IE:
        실패 (UserAgent.IE.to 끈 () + "unexpected.");
}

요약하기 위하여:

  • 만일 계산서가 부류 없이 enum 사용되어야 하면.
  • 만일 자격이 없는 enum 이름만 (위 보기에 있는 FIREFOX 또는 IE 같이) 사용되어야 하면.

이렇게 지금 당신은 자바 enums, 권리를 가진 더 이상 실수하지 않을ㄴ가 것입니다?