A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public Lamp blackOut() {
                this.lighted = false;
                if (opposite != null)
                        Lamp.valueOf(opposite).blackOut();

                Lamp nextLamp = Lamp.valueOf(next);//为啥这里把Lamp nextLamp=null换成了
//=Lamp.valueOf(next);运行结果就会有问题呢。这里怎么先赋值初始化和先赋值null,然后在代码里再赋具体值差别很大呀!
                if (next != null) {
                        System.out.println("绿灯从" + name() + "方向变成----》" + next + "方向");
//                        nextLamp = Lamp.valueOf(next);
                        nextLamp.light();
                }
                return nextLamp;
        }

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

6 个回复

倒序浏览
有的灯nextLamp为null。(相对应的灯没有nexLamp属性)
所以直接这样Lamp nextLamp=Lamp.valueOf(next);会出错。
应该先判断nextLamp是否为null,不为空才能取到灯。
回复 使用道具 举报
e.c 发表于 2014-2-24 16:25
有的灯nextLamp为null。(相对应的灯没有nexLamp属性)
所以直接这样Lamp nextLamp=Lamp.valueOf(next);会 ...

不是呀,我判断的是next不为空,不是nextLamp不为空,nextLamp只是一个Lamp变量用于记录下一个灯而已
回复 使用道具 举报
徐青松 发表于 2014-2-24 17:11
不是呀,我判断的是next不为空,不是nextLamp不为空,nextLamp只是一个Lamp变量用于记录下一个灯而已 ...

  Lamp nextLamp = Lamp.valueOf(next)
next为空的话  这里是不是就该出错了
回复 使用道具 举报
flying 发表于 2014-2-24 18:29
Lamp nextLamp = Lamp.valueOf(next)
next为空的话  这里是不是就该出错了

但是没报错呀
回复 使用道具 举报
午夜b'Boy 来自手机 中级黑马 2014-2-24 20:14:28
地板
徐青松 发表于 2014-2-24 19:24
但是没报错呀

这里如果没错,nextlemp可能就接收到一个null对象,倒至后面代码错误!
回复 使用道具 举报
午夜b'Boy 发表于 2014-2-24 20:14
这里如果没错,nextlemp可能就接收到一个null对象,倒至后面代码错误!

我们分两种情况:1、next=null 2、next!=null。当next=null时,Lamp nextLamp = Lamp.valueOf(next)这里获得的nextLamp为null吧?!我是觉得为null的。那和初始化时直接给他赋值null没区别!当next!=null时,在外面和在里面赋值都没区别呀!我是哪里没考虑到呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马