如何在启动流之前使用lambda表达式检查空对象

时间:2019-03-29 05:14:37

标签: java lambda java-8 java-stream optional

我有以下方法:

private Optional<Car> findCarByID(String id, CarResponse carResponse) {
return carResponse.getCars().stream()
.filter(car -> car.getID().equalsIgnoreCase(id))
.findFirst();

但是carResponse有时可以为null,我想在尝试获取汽车并将其流式传输之前进行检查(引发了空指针异常)。我用“ if else”进行了检查,如下所示:

private Optional<Car> findCarByID(String id, CarResponse carResponse) {
if (carResponse!= null) {
return carResponse.getCars().stream()
.filter(car -> car.getID().equalsIgnoreCase(id))
.findFirst();
}
return Optional.empty();
}

有什么方法可以在lambda表达式的开头包含check carResponse!= null而不使用“ if else”吗?

1 个答案:

答案 0 :(得分:1)

是正确的,在代码中添加另外optional可能会使代码的可读性降低。尽管三元运算符可以为您节省几次按键操作。

return carResponse == null ? Optional.empty() : carResponse.getCars().stream()
         .filter(car -> car.getID().equalsIgnoreCase(id))
         .findFirst();