package com.foresee.test;
/**
* 利用枚举来定义红黄绿灯
*
* @author qinyujun
*/
public class EnumTest {
public static void main(String[] args) {
try{
while(true){
System.out.println("当前灯:"+TrafficLamp.GREEN);
Thread.currentThread().sleep(TrafficLamp.GREEN.getTime());
System.out.println("当前灯:"+TrafficLamp.GREEN.nextLamp());
Thread.currentThread().sleep(TrafficLamp.GREEN.nextLamp().getTime());
System.out.println("当前灯:"+TrafficLamp.GREEN.nextLamp().nextLamp());
Thread.currentThread().sleep(TrafficLamp.GREEN.nextLamp().nextLamp().getTime());
}
}catch(Exception e){
e.printStackTrace();
}
}
public enum TrafficLamp {
GREEN(5000){
public TrafficLamp nextLamp(){
return YELLOW;
}
}, YELLOW(2000){
public TrafficLamp nextLamp(){
return RED;
}
}, RED(5000){
public TrafficLamp nextLamp(){
return GREEN;
}
};
//获取下一个灯,在枚举元素中实现
public abstract TrafficLamp nextLamp();
//灯亮的时间
private long time;
private TrafficLamp(long time) {
this.time = time;
}
public long getTime(){
return this.time;
}
}
}
在看张孝祥教学视频里学到枚举类型,这个不常用的特性,今天就学着做了一个交通灯。
运行效果:
先是绿灯,等过了5秒后,变为黄灯,过了2秒变为红灯,再过5秒变绿灯,之后这样一直循环下去