黑马程序员_枚举

本文通过交通灯系统的实例,介绍了如何使用Java中的enum关键字实现枚举,并将其与普通类实现方式进行对比。同时,还展示了如何利用枚举特性来创建单例模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- android培训java培训、期待与您交流! ----------

枚举

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


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


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

public abstract class TrafficLamp {
	// 定义了3个本类的常量对象,作为枚举中的3中状态。当其他类调用本类对象时,只能调用3个对象中的某一个。
	public static final TrafficLamp RED = new TrafficLamp(45) {


		@Override
		public TrafficLamp nextLamp() {
			return GREEN;
		}
	};
	public static final TrafficLamp YELLOW = new TrafficLamp(5) {


		@Override
		public TrafficLamp nextLamp() {
			return RED;
		}


	};
	public static final TrafficLamp GREEN = new TrafficLamp(40) {


		@Override
		public 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) {


		@Override
		public TrafficLamp nextLamp() {
			return GREEN;
		}


	},
	YELLOW(5) {


		@Override
		public TrafficLamp nextLamp() {
			return RED;
		}
	},
	GREEN(40) {


		@Override
		public TrafficLamp nextLamp() {
			return YELLOW;
		}
	};
	private int time;


	// 函数不能放到常量对象之前
	private TrafficLamp() {
	};


	private TrafficLamp(int time) {
		this.time = time;
	}


	public abstract TrafficLamp nextLamp();


}




如果将枚举中的对象限定成一个,可以将其看成一个单例对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值