Java Stream-筛选器列表时为NullPointExeption

时间:2019-03-20 15:03:27

标签: java

我正在尝试从列表对象中过滤出字段isActive设置为N或为null的对象。不幸的是,我在方法过滤器中得到了NullPointerException,我不知道这是怎么回事?

代码:

...
return dictionary.getAllPermissions().stream()
            .filter(Objects::nonNull)
            .filter(z->"N".equals(z.getIsActive().toString()) || z.getIsActive().equals(null)) //field isActive is Character
            .collect(Collectors.toList());

4 个答案:

答案 0 :(得分:3)

您应该在此处反转支票:

.filter(z->"N".equals(z.getIsActive().toString()) || z.getIsActive().equals(null)) 

.filter(z-> z.getIsActive() == null || "N".equals(z.getIsActive().toString())) 

我们的想法是首先确保值z.getIsActive()不为null,然后才能对其实际调用tostring()方法。

答案 1 :(得分:3)

您订购的命令有误,应该是:

.filter(z -> z.getIsActive() == null || "N".equals(z.getIsActive().toString())) 

答案 2 :(得分:2)

z.getIsActive().toString()isActive为null时抛出NullPointExeption。

答案 3 :(得分:0)

您说“字段'isActive'已设置为N或为空”,因此,如果为空,则所有z.getIsActive都为空,因此需要检查z.getIsActive == null