首先下面代码中的List放入了很多Person对象,其中有的对象是null的,如果不加校验调用Person的getXXX()方法肯定会报空指针错误,一般我们采取的方案就是加上if判断:其实,Java新特性Stream API 与 Optional 提供了更加优雅的方法:利用Stream API 中的 filter将队列中的空对象过滤掉,filter的意思是,list中的每个元素执行Objects的nonNull()方法,返回false的元素被过滤掉,保留返回true的元素。示例中的personList本身也可能会null,如果业务逻辑中要求personList为null时打日志报警,可以用Optional优雅的实现:代码中的表示如果personList为null,则执行这2句代码,返回一个不含元素的List,这样当personList为null的时候不会报空指针错误,并且还打了日志。

Java如何使用Optional与Stream取代if判空逻辑(JDK8以上)

Java如何使用Optional与Stream取代if判空逻辑(JDK8以上)

Java如何使用Optional与Stream取代if判空逻辑(JDK8以上)