看了好几天的java高新技术的视频,关于枚举,回看了几遍,发现好多不懂的地方都自然而然理解了不少。
下面帖出看完张老师的视频后,写出的一个关于枚举的例子,来具体谈谈枚举:
/**
枚举相当于一个类,它可以定义构造方法(必须是私有的),成员变量,普通方法和抽象方法。
枚举里的元素如:SUN,MON,TUE;他们必须定义在枚举类的最开始部分,且枚举元素列表的后面要有分号结束。
SUN()和SUN是一样的效果,因为在类加载的时候就已经在调用默认的枚举父类的构造方法了。
枚举只有一个成员时,就可以作为一种单例的实现方式。
*/
public class EnumTest {
public static void main(String[] args) {
System.out.println(TrafficLamp.GREEN.toLocalString()+TrafficLamp.GREEN.time);
System.out.println(TrafficLamp.YELLOW.toLocalString()+TrafficLamp.YELLOW.time);
System.out.println(TrafficLamp.RED.toLocalString()+TrafficLamp.RED.time);
}
//定义一个枚举
public enum TrafficLamp {
GREEN(45){//相当于枚举的一个子类,调用父类枚举类的构造方法
public TrafficLamp nextLamp(){
return GREEN;
}
},
YELLOW(5){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
RED(30){
public TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp nextLamp();//定义一个抽象方法,让其子类去实现得到枚举值,返回枚举类型
private int time;
private TrafficLamp(int time){//枚举类的构造方法必须是私有的,定义表示时间的构造方法
this.time=time;
}
public String toLocalString(){//通过toLocalString方法得到交通灯的"绿灯"、"黄灯"、、、格式
if(this==GREEN){
return this==GREEN?"绿灯":"";
}
if(this==YELLOW){
return this==YELLOW?"黄灯":"";
}
if(this==RED){
return this==RED?"红灯":"";
}
return null;
}
}
}
它的运行结果如下图: |
|