【发布时间】:2017-10-26 09:51:15
【问题描述】:
我有一个对象Person,它有两个属性Name 和Status。我希望从对象列表中过滤出状态为In Progress 的Person 对象。这是我的代码:
personList.stream().filter(
t -> t.getStatus().equalsIgnoreCase(
"In Progress")).collect(Collectors.toList());
但是代码抛出了nullpointerexception 错误。当我检查时,我看到一些具有In Progress 状态的对象具有空值。我们如何在 lambda 中处理这个问题?
【问题讨论】:
-
您可以像处理任何其他代码一样处理它。在这种情况下,最好执行 "In Progress".equalsIgnoreCase(t.getStatus())
-
真正的问题是当状态为空时你想要发生什么。你想过滤掉那些行吗?包括他们?以有意义的信息失败?从方法返回false? Null 是一种特殊情况,需要深思熟虑,而不是忽略一些技术技巧。如果你不想有这种想法,你应该首先避免让 status 为 null。