黑马程序员技术交流社区

标题: 对于枚举的一些总结和交通灯枚举的实现 [打印本页]

作者: dengwenqiang    时间: 2016-1-10 09:48
标题: 对于枚举的一些总结和交通灯枚举的实现
public class TrafficLampTest {
    public static void main(String[] args) {
        TrafficLamp tl=TrafficLamp.GREEN;
        System.out.println(tl+"\n下一个是:");
        System.out.println(tl.nextLamp());
    }
}
enum TrafficLamp {
    // 枚举项,枚举项要重写抽象方法
    RED(30) {   //定义绿灯,实现下一个灯是黄灯
        public TrafficLamp nextLamp() {
            return GREEN;
        }
    },
    YELLOW(5) {//定义黄灯,实现下一个灯是红灯
        public TrafficLamp nextLamp() {
            return RED;
        }
    },
    GREEN(45) {//定义红灯,实现下一个灯是绿灯
        public TrafficLamp nextLamp() {
            return YELLOW;
        }
    };
    // 抽象方法
    public abstract TrafficLamp nextLamp();

    // 成员变量
    private int time;

    // 构造方法
    private TrafficLamp(int time) {
        this.time = time;
    }

    // 重写toString可以实现名字的显示
    public String toString() {
        String name = null;
        switch (this) {
        case GREEN:
            name = "绿灯";
            break;
        case RED:
            name = "红灯";
            break;
        case YELLOW:
            name = "黄灯";
            break;
        }
        return name;
    }
}

1,定义枚举要用关键字enum
2,所有的枚举类都是Enum的子类
3,枚举类的第一行必须是枚举项,最后一个枚举项的分号是可以省略的,但是如果枚举类后面还有内容这个分号就不能省略,建议不要省略分号
4,枚举类可以有抽象方法,但是枚举项必须实现抽象方法
5,枚举可以在switch语句中使用
6,values()这个方法虽然在API中找不到,但是每个枚举类都是具有这个方法的,它遍历枚举类的所有枚举值非常方便
以下是一个简单的枚举类,在switch中的应用,以及如何遍历枚举项
package com.heima.lasttest;

public class Test {
    public static void main(String[] args) {
    //增强for遍历枚举值
        for (EnumTest e : EnumTest.values()) {
            System.out.println(e.toString());
        }
         
        System.out.println("----------------我是分隔线------------------");
         
        EnumTest test = EnumTest.SAT;
        switch (test) {
        case MON:
            System.out.println("今天是星期一");
            break;
        case TUE:
            System.out.println("今天是星期二");
            break;
        case WED:
            System.out.println("今天是星期三");
            break;
        case THU:
            System.out.println("今天是星期四");
            break;
        case FRI:
            System.out.println("今天是星期五");
            break;
        case SAT:
            System.out.println("今天是星期六");
            break;
        case SUN:
            System.out.println("今天是星期日");
            break;
        default:
            System.out.println("输入非法");
            break;
        }
    }
}

enum EnumTest {
    MON, TUE, WED, THU, FRI, SAT, SUN;
}


作者: kmustfeng    时间: 2016-1-10 10:28
膜拜大神,回去研究一下代码




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2