java 8 中针对集合或数组提供了 stream 流式操作,这种链式写法非常简洁,但是当待操作的集合或数组为 null 时,会抛出 NPE 错误。有以下几种方式可以避免空错误,且又能保留链式写法的解决方案。
利用 Optional 类(java 8)
可以利用 Optional
封装类将要操作的集合放在里面,具体如下:
Optional.ofNullable(collection).orElse(Collections.emptySet()).stream()...
当要操作的集合对象 collection
为空时,在 orElse
里默认用 Collections.emptySet()
来规避 null
,以可继续进行下一步的 stream
操作。
利用 org.apache.commons.collections4.CollectionUtils
也可以利用 apache 的 collections4 包,示例如下:
org.apache.commons.collections4.CollectionUtils.emptyIfNull(list).stream()...
Stream.ofNullable(java 9)
如果使用 java 9+,可以用流提供的 ofNullable 方法,例子如下:
Stream.ofNullable(arr)...