package question1;
/* 第一题
* 定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,
* 例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。
*
* 解题方式一
* 1.声明RED, GREEN, YELLO 3个枚举常量表示灯的状态
* 2.编写 getNextLamp()方法用以取得某个灯的下一个灯
* 3.由于只有3个灯,所以在逻辑处理方面在getNextLamp()
* 方法里面编写,只需要2次逻辑判断
*
* 优点:不存在额外的内存开销
* 缺点:运行时的效率略低
*/
public enum TrafficLamp_1
{
/*
* 交通灯的3种状态
*/
RED, GREEN, YELLO;
/**
* 取得当前灯的下一个灯
*/
public TrafficLamp_1 getNextLamp()
{
//判断当前灯是红灯吗,是就返回绿灯,
//否则在判断是绿灯吗,是就返回黄灯,
//否则返回红灯,到这肯定当前是黄灯
return (this == RED) ? GREEN : ((this == GREEN) ? YELLO : RED);
}
public static void main(String[] args)
{
//张老师的使用方法在内存方面会消耗的多一些
//效率方面由于需要valueOf(String name)
//方法来获得下一个灯的实例对象,所以也不是
//很好
//定义一个交通灯引用,用来保存当前的交通灯状态
TrafficLamp_1 current;
//初始为红灯
System.out.println((current = TrafficLamp_1.RED).name());
//打印当前灯的下一个灯
System.out.println((current = current.getNextLamp()).name());
System.out.println((current = current.getNextLamp()).name());
System.out.println((current = current.getNextLamp()).name());
//为了维护valueOf方法的正确性,所以枚举并没有提供
//对外的setName方法
System.out.println(TrafficLamp_1.valueOf("RED").name());
}
}
交通灯实例的实现方式一 省内存版
最新推荐文章于 2023-11-16 22:35:44 发布