Java NullPointerException检查链接方法

我想在访问几个类深的字段(在get方法链中)时检查空指针.但是,如果较早的方法之一为null,则无论如何都会得到NullPointerException.

这是我要检查的内容,尽管它仍然可以获取NullPointerException:

if(x.getLocation().getBuilding().getSolidFuelInd() != null)
            pol.setWood_heat_ind(x.getLocation().getBuilding().getSolidFuelInd() ? "Y" : "N");

这是我希望上面的代码展示的行为:

if(x.getLocation() != null)
    if(x.getLocation().getBuilding() != null)
        if(x.getLocation().getBuilding().getSolidFuelInd() != null)
            pol.setWood_heat_ind(x.getLocation().getBuilding().getSolidFuelInd() ? "Y" : "N");

pol上的字段是可选的,并且仅当以上getter不为null时才应设置.但是,建筑物和位置对象也可以为null,因此现在我必须检查它们是否有效.

有没有像我想要的那样检查上述所有内容的更短方法?

解决方法:

如果需要减少代码,则可以将每个调用保存在变量中.

// note: Replace type with the correct type
type location = x.getLocation();
type building = location == null ? null : location.getBuilding();

// note: you don't have to check for null on primitive types 
pol.setWood_heat_ind(building != null && building.getSolidFuelInd() ? "Y" : "N");

这更清洁,更容易遵循.

值得深思的是,您不需要在原始类型boolean,int,byte等上检查是否为null,因此不需要对building.getSolidFuelInd()进行最后的null检查

上一篇:4. abp中的asp.net core模块剖析


下一篇:java-在Robolectric @config中指定清单路径时,它将引发Null指针异常