Guava 中的 TryFind 方法抛出 NullPointerException

TryFind method in Guava throw NullPointerException

我在 运行 我的 Web 应用程序时收到 NullPointerException,我保存日志并再次启动服务器,此错误不再出现,但我希望 NullPointer 的保护方法从未出现。我确定这一行是导致此错误的原因

Vehicle pVehicle =
        Iterables.tryFind(aFactory.getVehicle(), new Predicate<Vehicle>() {
            @Override
            public boolean apply(Vehicle vehicle) {
                return vehicle.getVehicleBrand().equals(aVehicle.getVehicleBrand());
            }
        }).orNull();

但这不是我的代码,我不知道是哪个部分导致了这个错误> 请问这个NullPointer可以出现在哪个元素上以及如何保护这段代码

可以生成空指针:

aFactory.getVehicle() : if aFactory is null
vehicle.getVehicleBrand() : if vehicle is null
aVehicle.getVehicleBrand() : if aVehicle is null

检查以下语句:

  • aFactory - 因为 getVehicle() 调用。
  • aFactory.getVehicle() - 因为 Iterables.tryFind 需要一个非空的 Iterable
  • vehicle - 因为 getVehicleBrand() 调用
  • aVehicle - 因为 getVehicleBrand() 调用
  • vehicle.getVehicleBrand() - 因为 .equals() 调用

如果其中任何一个为空,则会导致 NullPointerException