补全以下代码:// 声明的抽象方法,返回下一个交通信号灯 public abstract TrafficSignal nextSignal(); } public class TestEnum { public static void main(String[] args) throws Exception{ System.out.println("打印出所有的交通信号灯:"); TrafficSignal[] lights = TrafficSignal.values(); // 使用TrafficSignal类的静态方法values,以获得所有枚举常量组成的数组 for(TrafficSignal light : lights) { System.out.println(light.ordinal() + ":" + light.name()); } System.out.println("模拟交通信号灯的变化过程:"); TrafficSignal light = TrafficSignal.GREEN; //创建枚举对象:绿色的交通信号灯 for(int i =0; i<7; i++) { System.out.println(light); Thread.sleep(100*light.getDuration()); // 程序会暂停100*duration毫秒,为了加快测试输出,把1秒模拟为100毫秒 [代码] // 切换到下一个交通信号灯 } } }
时间: 2024-02-03 07:03:16 浏览: 138
// 声明的抽象方法,返回下一个交通信号灯
public abstract TrafficSignal nextSignal();
public enum TrafficSignal {
RED(30) {
@Override
public TrafficSignal nextSignal() {
return GREEN;
}
},
YELLOW(5) {
@Override
public TrafficSignal nextSignal() {
return RED;
}
},
GREEN(45) {
@Override
public TrafficSignal nextSignal() {
return YELLOW;
}
};
private int duration; // 持续时间
private TrafficSignal(int duration) {
this.duration = duration;
}
public int getDuration() {
return duration;
}
}
public class TestEnum {
public static void main(String[] args) throws Exception{
System.out.println("打印出所有的交通信号灯:");
TrafficSignal[] lights = TrafficSignal.values(); // 使用TrafficSignal类的静态方法values,以获得所有枚举常量组成的数组
for(TrafficSignal light : lights) {
System.out.println(light.ordinal() + ":" + light.name());
}
System.out.println("模拟交通信号灯的变化过程:");
TrafficSignal light = TrafficSignal.GREEN; //创建枚举对象:绿色的交通信号灯
for(int i =0; i<7; i++) {
System.out.println(light);
Thread.sleep(100*light.getDuration()); // 程序会暂停100*duration毫秒,为了加快测试输出,把1秒模拟为100毫秒
light = light.nextSignal(); // 切换到下一个交通信号灯
}
}
}
在这个示例代码中,我们定义了一个TrafficSignal枚举类,它有三个枚举常量:RED,YELLOW和GREEN。每个枚举常量都有一个持续时间duration,以表示它的持续时间。
在TrafficSignal枚举类中,我们还定义了一个抽象方法nextSignal(),用于返回下一个交通信号灯。每个枚举常量都实现了这个方法,以便能够切换到下一个交通信号灯。
在TestEnum类中,我们首先打印出所有的交通信号灯,然后模拟交通信号灯的变化过程。我们创建了一个TrafficSignal对象,初始值为GREEN,然后使用for循环模拟了交通信号灯的变化过程。在循环中,我们输出当前的交通信号灯,然后使用Thread.sleep()方法模拟灯亮起时间,最后调用nextSignal()方法切换到下一个交通信号灯。
希望这个示例代码能够帮助您理解Java枚举类型的使用方法。
阅读全文