黑马程序员技术交流社区
标题:
关于枚举。。。。
[打印本页]
作者:
苑占丽
时间:
2012-7-18 17:23
标题:
关于枚举。。。。
看了好几天的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;
}
}
}
它的运行结果如下图:
meiju.jpg
(12.74 KB, 下载次数: 25)
下载附件
2012-7-18 17:16 上传
作者:
hengxing0079
时间:
2014-7-22 00:05
不错,注解解释的不错,赞一个!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2