昨天学习了张老师的交通灯管理系统,不得不说张老师是我们想入门学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值的,为什么还要判断??? 
当我除去了判断,运行又出错了,为什么啊?? 
 
 
有没有人研究过代码啊,求知道,。。。谢了、、、 
 |   
        
 
    
    
    
     
 
 |