黑马程序员_枚举

来源:互联网 发布:linux日志分析 编辑:程序博客网 时间:2024/06/01 07:53
------- android培训、java培训、期待与您交流! ----------

枚举

一类包含特定常量对象的类。


使用enum关键字可以实现,也可以使用普通的class关键字实现同样的功能,因为enum也是一种特殊的类。


例子:实现一个交通灯系统。
先使用class实现:

public abstract class TrafficLamp {// 定义了3个本类的常量对象,作为枚举中的3中状态。当其他类调用本类对象时,只能调用3个对象中的某一个。public static final TrafficLamp RED = new TrafficLamp(45) {@Overridepublic TrafficLamp nextLamp() {return GREEN;}};public static final TrafficLamp YELLOW = new TrafficLamp(5) {@Overridepublic TrafficLamp nextLamp() {return RED;}};public static final TrafficLamp GREEN = new TrafficLamp(40) {@Overridepublic TrafficLamp nextLamp() {return YELLOW;}};// 此处应该将构造函数访问权限设置为private,让外部无法直接初始化本类对象。private TrafficLamp() {}// 这个构造函数用于给交通灯对象加上切换时间private TrafficLamp(int time) {// 将时间获得this.time = time;}// 定义一个变量表示交通灯切换的时间private int time;// 交通灯切换的方法public abstract TrafficLamp nextLamp();}



使用enum实现
public enum TrafficLamp {//此处实际上是子类调用父类的构造方法初始化RED(45) {@Overridepublic TrafficLamp nextLamp() {return GREEN;}},YELLOW(5) {@Overridepublic TrafficLamp nextLamp() {return RED;}},GREEN(40) {@Overridepublic TrafficLamp nextLamp() {return YELLOW;}};private int time;// 函数不能放到常量对象之前private TrafficLamp() {};private TrafficLamp(int time) {this.time = time;}public abstract TrafficLamp nextLamp();}




如果将枚举中的对象限定成一个,可以将其看成一个单例对象。
原创粉丝点击