case 분기와 break가 필요한 이유를 실행으로 확인합니다.
Java 8의 switch 문은 하나의 값을 여러 case와 비교합니다. 일치한 case부터 실행하며 break가 없으면 다음 case까지 이어지는 fall-through가 발생합니다.
level이 BEGINNER라 첫 case에서 recommendedHours에 10을 넣고 break로 switch를 빠져나가므로 10이 출력됩니다. 문자열 switch는 equals로 비교하는 것과 같아서 대소문자가 다른 beginner는 어느 case에도 맞지 않고 default로 가 0이 됩니다. level이 null이면 case와 비교하기도 전에 NullPointerException이 발생합니다.
여러 case가 같은 동작을 공유할 때만 의도적으로 case를 연달아 배치하고, 그 외에는 break로 분기를 끝냅니다.
도메인의 유한한 상태는 문자열보다 enum으로 모델링하면 오타와 누락을 컴파일러가 더 잘 찾습니다.
break를 빠뜨려 다음 등급의 코드까지 실행되는 오류를 주의하세요.
직접 바꿔보세요ADVANCED 경우를 추가하고 break를 제거했을 때 결과를 비교하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.