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;
}
|
|