package question1;
/* 第一题
* 定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,
* 例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。
*
* 解题方式二
* 1.声明RED, GREEN, YELLO 3个枚举常量表示灯的状态
* 2.编写 getNextLamp()方法用以取得某个灯的下一个灯
* 3.通过静态块在加载时直接进行下一个灯的初始化
*
* 优点:多了3个灯的引用,内存略多一些
* 缺点:运行时的效率高,使用也方便的多
*/
public enum TrafficLamp_2
{
/*
* 交通灯的3种状态
*/
RED, GREEN, YELLO;
/* 用来保存当前灯的下一个灯的变量 */
private TrafficLamp_2 nextLamp;
//初始化好所有灯的下一个灯
static
{
RED.nextLamp = GREEN;
GREEN.nextLamp = YELLO;
YELLO.nextLamp = RED;
}
/**
* 取得当前灯的下一个灯
*/
public TrafficLamp_2 getNextLamp()
{
return nextLamp;
}
public static void main(String[] args)
{
//这个方式的实现
//比张老师的那种存下一个灯的名字要好一些
//在使用的时候不用valueOf来拿下一个的实例
//效率上要高不少
//
//使用方面RED.getNextLamp().getNextLamp()
//这样蛮方便的
//
//对比TrafficLamp_1,2的方式,效率更高,内存
//开销和张老师的差不多,多了几个引用
//定义一个交通灯引用,用来保存当前的交通灯状态
TrafficLamp_2 current;
//初始为红灯
System.out.println((current = TrafficLamp_2.RED).name());
//打印当前灯的下一个灯
System.out.println((current = current.getNextLamp()).name());
System.out.println((current = current.getNextLamp()).name());
System.out.println((current = current.getNextLamp()).name());
}
}