被这个bug困了一些时间。在使用java新特性lamda表达式写一些东西时发生的bug,首先使用了map方法获取实体类的某一个属性的值,因为要一个,只要一个值,所以继而调用了findFirst方法,但是担心出现空值,所以有在后面使用了orElse(null),就是在这种情况下出现了这个bug.我想具体的原因还没有弄清楚,暂时记录下这个bug,最后的处理方式是map调用时,里面的方法原先返回值有可能是null,但是我改成了BigDecimal.ZERO,就ok了。
code:
List<People> pList = new ArrayList<>();
pList.stream().filter(p->!StringUtils.isEmpty(p.getName()))
.map(p->getSalary(p)).findFirst().orElse(null);
getSalary()是一个我写的类似方法,用于获取double数值的工资并且转化成BigDecimal。默认返回数值是null,改成BigDecimal.ZERO.因为公司安全性的问题,所以我不粘贴自己的code.