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

Java 如何在启动流之前使用lambda表达式检查空对象,java,lambda,java-8,functional-programming,java-stream,Java,Lambda,Java 8,Functional Programming,Java Stream,我有以下方法: private Optional<Car> findCarByID(String id, CarResponse carResponse) { return carResponse.getCars().stream() .filter(car -> car.getID().equalsIgnoreCase(id)) .findFirst(); 但carResponse有时可能为null,我想在尝试获取汽车并将其流式传输之前检查这一点。引发null指针异常。我用

我有以下方法:

private Optional<Car> findCarByID(String id, CarResponse carResponse) {
return carResponse.getCars().stream()
.filter(car -> car.getID().equalsIgnoreCase(id))
.findFirst();
但carResponse有时可能为null,我想在尝试获取汽车并将其流式传输之前检查这一点。引发null指针异常。我用“如果还有”这样的话做了检查:

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表达式开头为null,不使用“if else”

这是正确的,在代码中添加另一个选项可能会降低代码的可读性。虽然三值运算符可以为您节省几个按键

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

重复链接提供了很多方法来处理这个问题。我想你可以在