Guava中的TryFind方法抛出NullPointerException

时间:2016-10-04 11:24:02

标签: java nullpointerexception guava

运行我的webapplication时出现NullPointerException,我保存日志并再次启动服务器,此错误不再出现,但我希望保护方法到NullPointer从未出现过。我确定这一行是造成这个错误的原因

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

但这不是我的代码,我不知道,哪一部分可能会导致此错误&gt; 请问,这个NullPointer可以出现哪个元素以及如何保护此代码

2 个答案:

答案 0 :(得分:2)

检查以下陈述:

  • Entity ExpenseTypeCode Amount Description APSupplierID ExpenseReportID 12 001 5 Dinner 7171 90 12 001 6 Dinner 7171 90 12 001 5 Dinner 7273 90 12 001 5 Dinner 7171 95 12 001 5 Dinner 7171 90 - 由于aFactory来电。
  • getVehicle() - 因为Iterables.tryFind需要一个非null的Iterable
  • aFactory.getVehicle() - 由于vehicle来电
  • getVehicleBrand() - 由于aVehicle来电
  • getVehicleBrand() - 由于vehicle.getVehicleBrand()来电

如果其中任何一个为null,则会导致.equals()

答案 1 :(得分:1)

可以生成空指针:

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