enum 예제를 따라해보던 중 아래에 있는 코드를 실행했더니 모든 case가 출력되었다. 예제에선 case APPLE의 코드만 출력되었는데 내 코드는 왜 모두 출력되었을까?
break를 빠뜨렸다.switch-case는 break로 escape하지 않으면 처음 만난 케이스 이후의 모든 코드가 실행된다.
Fruit type = Fruit.APPLE;
switch (type) {
case APPLE:
System.out.println(57 + "Kcal, " + Fruit.APPLE.getColor() + Fruit.APPLE.getPrice());
case BANANA:
System.out.println(44 + "Kcal, " + Fruit.PEACH.getColor());
case PEACH:
System.out.println(32 + "Kcal, " + Fruit.BANANA.getColor());
}
// enum은 연관된 상수의 집합이다.
class Fruit {
public static final Fruit APPLE = new Fruit();
public static final Fruit PEACH = new Fruit();
public static final Fruit BANANA = new Fruit();
}
// 이 코드는 위의 코드와 사실상 같다.
enum Fruit {
APPLE,
PEACH,
BANANA;
}
enum은 많은 곳에서 사용하던 디자인 패턴을 언어가 채택해서 문법적인 요소로 단순화시킨 것이라고 할 수 있다.