JDK5新特性_5.交通灯案例与枚举的总结

使用枚举实现交通灯案例:

/**
 * 枚举总结案例:交通灯
 * 
 * @author linguoren
 *
 */
public class T5_EnumResult {

    public static void main(String[] args) {
        System.out.println(TrafficLamp.GREEN_LAMP);
        System.out.println("绿灯下一个灯:" + TrafficLamp.GREEN_LAMP.nextLamp());
        System.out.println("黄灯下一个灯:" + TrafficLamp.YELLOW_LAMP.nextLamp());

    }

    public enum TrafficLamp {
        RED_LAMP(30) {
            public TrafficLamp nextLamp() {
                return GREEN_LAMP;
            }

            @Override
            public String toString() {
                return "红灯,时长为:" + this.time;
            }
        },
        GREEN_LAMP(45) {

            @Override
            public TrafficLamp nextLamp() {
                return YELLOW_LAMP;
            }

            @Override
            public String toString() {
                return "绿灯,时长为:" + this.time;
            }
        },

        YELLOW_LAMP(10) {
            @Override
            public TrafficLamp nextLamp() {
                return RED_LAMP;
            }

            @Override
            public String toString() {
                return "黄灯,时长为:" + this.time;
            }

        };// 红绿蓝三种灯

        /**
         * 
         * @return 下一个灯的对象
         */
        public abstract TrafficLamp nextLamp();

        int time;

        TrafficLamp(int time) {
            this.time = time;
        }

    }
}

控制台结果: 

  绿灯,时长为:45
  绿灯下一个灯:黄灯,时长为:10
  黄灯下一个灯:红灯,时长为:30

这个案例包含了枚举最常见的

这个案例包含了枚举最常见的用法,枚举我们可以把它看成一个类,一个特殊的类,该类的对象在类中创建而不能在外面创建(构造器被private了)

枚举是天然的单例,如果要实现单例模式,可以考虑使用枚举。

posted @ 2018-01-19 14:34  Dylan丶Djm  阅读(139)  评论(0编辑  收藏  举报