问答详情
源自:3-5 使用多线程实现多客户端的通信

判断资源是否为null是不是很多余?

要不要if判断都一样吧,

提问者:心中的愤怒就像龙咆哮 2016-08-05 18:48

个回答

  • Airly
    2016-10-24 11:12:30
    已采纳

    验证非NULL是编码中很重要的一环。假如本来就是NULL,这是调用各自的close()方法是会报错的。

    如果在实例化这些对象时出错导致这些对象为NULL,或是实例化没问题但中途出了什么异常导致这些对象为NULL,都会在未经验证非NULL前尝试调用close()方法关闭时报错。


  • zzzzzzz小盆友
    2016-12-30 14:22:28

    在try前面定义了变量,默认为null。在最后可能有些变量的值仍为初始值null,为了避免空指针异常,在关闭流、Socket之前,需要检查变量是否为null。

    ps:在Java6或更早的版本,通常在finally块中关闭流等,但是Java7引入了“带资源的try”(try with resources),可以更简洁的完成清理。

  • 爱你好真
    2016-08-05 22:20:21

    no    这个还是有必要判定的