本帖最后由 冯晓骏 于 2013-11-16 03:11 编辑
- public Lamp blackOut(){
-
- lighted = false;
-
- System.out.println(name() + "灯变红了");
-
-
- if(oppsite != null){
- Lamp.valueOf(oppsite).blackOut();
- }
-
- //if(next != null)
- return Lamp.valueOf(next);
- //return null;
-
-
- }
复制代码 这个绿灯变红灯的代码,这个代码运行过程中是有问题的,如果把注释的两句去掉就不会出错,我想问的是,其实仔细想想,理论上讲next是不可能为空的,只有传到oppsite下一级以后才有可能为空,但是那个值我并没有接收,而且运行过程中也没有报nullpointerexception异常,所以我就不知道本来逻辑很正常的代码,就是不用判断next为不为空,因为为空我不会接收他,他的返回值是没有意义的,不为空我才会接收他,但运行过程会出问题,那么,问题出在哪呢?有人可以解答么 |
|