昨天学习了张老师的交通灯管理系统,不得不说张老师是我们想入门学java的好老师,讲解项目思路清晰,面向对象的举例也是令人记忆深刻。
在源代码中,我觉得有一个方法是最重要的,那就是blackOut(),但这个代码中有一些我不清楚的
源码如下:
- /**
- * 某个灯变红时,对应方向的灯也要变红,并且下一个方向的灯要变绿
- * @return 下一个要变绿的灯
- */
- public Lamp blackOut(){
- this.lighted = false;
- if(opposite != null){
- Lamp.valueOf(opposite).blackOut();
- }
-
- Lamp nextLamp= null;
- if(next != null){
- nextLamp = Lamp.valueOf(next);
- System.out.println("绿灯从" + name() + "-------->切换为" + next);
- nextLamp.light();
- }
- return nextLamp;
- }
复制代码
不清楚的就是为什么要判断if(opposite != null)和if(next != null),因为12条线路在代码中只要掌控S2N,S2W,E2W,E2S四条线路就行了,而这四条线路对应的枚举类都包含了opposite和next的赋值,也就是一定不会是null值的,为什么还要判断???
当我除去了判断,运行又出错了,为什么啊??
有没有人研究过代码啊,求知道,。。。谢了、、、
|
|