我正在尝试从列表对象中过滤出字段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());
答案 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