在Java中return null 是否安全【整理】

实践中考虑到这个问题,读了知乎RednaxelaFX及很多朋友的回答,感觉豁然开朗。
知乎问题出处:https://www.zhihu.com/question/47997295

由于原文禁止转载,按我的理解总结几句:

  1. null值自身不会引起问题,但未必是很好的实践方法
  2. 使用null在解引用(dereference)时会引起NullPointerException的异常抛出
  3. 一般解引用操作有:
    • 读attribute
    • 写attribute
    • 读数组length
    • 读数组element
    • 写数组element
    • 调用method
    • foreach用法(隐含读length或调用method)
    • Auto-unboxing自动拆箱
    • 对String做switch
    • 创建内部类对象实例
    • 抛异常throw obj
    • synchronized (obj) { … }
  4. obj.getClass()可以检查对象是否为null并抛出NPE
  5. Objects.requireNonNull(obj)是检查null并抛出NPE常规做法
  6. 工程上调用时多一个null判断是个好习惯
  7. Java 8的Optional是个不错的选择(Optional 类的引入很好的解决空指针异常)
  8. 可以采用零长度的数组和集合代替返回null(Collections.EMPTY_LIST, Collections.EMPTY_SET和 Collections.EMPTY_MAP)
  9. 注意使用@NotNull 或者 @Nullable 注解

你可能感兴趣的:(Java)