背景:程序中经常会出现空指针异常,如
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