java程序中常用的判空方法(List判空,Map判空)

背景:程序中经常会出现空指针异常,如

Exception in thread "main" java.lang.NullPointerException

现在提供两个常用的工具类,可以使代码更加简洁和安全

1.安全使用List

import org.apache.commons.collections.CollectionUtils;
boolean b = CollectionUtils.isNotEmpty("list");

例子:

List> offerExtAttrsObject =(List>)resObject.get("offerExtAttrs");

在使用for循环遍历此list时,如果list为null;那么会报空指针异常

for (Map a: offerExtAttrsObject) {

  }

解决办法:

所以在使用list的时候,在外层使用这个工具类的方法,即可解决此问题

if(CollectionUtils.isNotEmpty(offerExtAttrsObject)){
    for (Map a: offerExtAttrsObject) {

         }

 }

 

2.安全使用map

import org.apache.commons.collections.MapUtils;

要确保map本身不为null,并且map.get("key")返回的值不为null

例子:

for (Map a: offerExtAttrsObject) {
    //a.put("attrId",null);
    a = null;
    //if("399000160".equals(MapUtils.getString(a,"attrId"))){
    if("399000160".equals(a.get("attrId")+"")){
        System.out.println(a);
    }
}

当map为null时,a.get("attrId")会报空指针异常,并且如果a.get("attrId")返回的值为Object,想要得到String类型,还需要+""

解决办法:

使用MapUtils.getString(a,"attrId")方法,返回的是安全的String类型,其中a为map;attrId为key

 

最终简化后的代码为

if(CollectionUtils.isNotEmpty(offerExtAttrsObject)){
    for (Map a: offerExtAttrsObject) {
        if("399000160".equals(MapUtils.getString(a,"attrId"))){
            System.out.println(a);
        }
    }
}

以上既可以判断list不为空,也可以保证map安全,并且返回String

 

你可能感兴趣的:(java程序中常用的判空方法(List判空,Map判空))