判空的使用区别
- null 是一个有效有意义的返回值
返回一个空对象(而非null对象) - null是无效有误的
null就是一个不合理的参数,就应该明确地中断程序,往外抛错误。这种情况常见于api方法。例如你开发了一个接口,id是一个必选的参数,如果调用方没传这个参数给你,当然不行。你要感知到这个情况,告诉调用方“嘿,哥们,你传个null给我做甚”
相对于判空语句,更好的检查方式
- assert语句,你可以把错误原因放到assert的参数中,这样不仅能保护你的程序不往下走,而且还能把错误原因返回给调用方,岂不是一举两得
- 也可以直接抛出空指针异常。上面说了,此时null是个不合理的参数,有问题就是有问题,就应该大大方方往外抛。
equals方法使用
用equals方法,请用object<不可能为空>.equals(object<可能为空>))
例如使用:"bar".equals(foo)
该方案可以避免空指针异常