在switch中使用enum,是enum提供的一项非常便利的功能。一般情况我们必须使用一个enum类型来修饰一个enum实例,但是在case语句中却不比如此。
enum Signal{GREEN,YELLOW,RED;}public class TrafficLight {Signal color = Signal.RED;public void change() {switch (color) {case RED:color = Signal.GREEN;break;case GREEN:color = Signal.YELLOW;break;case YELLOW:color = Signal.RED;break;}}@Overridepublic String toString() {return "当前信号灯为:" + color;}public static void main(String[] args) throws InterruptedException {TrafficLight light = new TrafficLight();for(int i=0;i<5;i++){light.change();System.out.println(light);}}}
上面的程序使用Switch和enum简单实现了一个状态机,我们可以发现在switch中并没用因为没用default语句而报错。那是因为并不是每一个enum实列都有对应的case语句,如果在case中添加return的话编译器就会提醒我们添加default。
