码迷,mamicode.com
首页 > 其他好文 > 详细

日常Bug(9.10)

时间:2018-09-10 11:01:20      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:键值对   service   内容   hashmap   sem   ase   否则   out   class   

一不小心又写了个bug,其实很简单的一个问题,马虎马虎不仔细,特此记录下来。

Map<String,Object> queryMaxSerialNumber = queryService.queryOne("DhDynamicBaseInfoMapper", "queryMaxSerialNumber", map1);
  if(queryMaxSerialNumber.isEmpty()){
    maxSerialNumber="0";
  }else{
    maxSerialNumber=queryMaxSerialNumber.get("serialNumber").toString();
  }

上述代码中的queryMaxSerialNumber.isEmpty() 这一块由于上面的查询到的queryMaxSerialNumber没有数据,所以并没有给Map<String,Object> queryMaxSerialNumber分配内存空间,所以用isEmpty()出错,而是该用==null。改正如下:

Map<String,Object> queryMaxSerialNumber = queryService.queryOne("DhDynamicBaseInfoMapper", "queryMaxSerialNumber", map1);
  if(queryMaxSerialNumber==null){
     maxSerialNumber="0";
   }else{
     maxSerialNumber=queryMaxSerialNumber.get("serialNumber").toString();
   }

Map的isEmpty()与==null的区别如下:

isEmpty()方法判断Map是否有内容(即new分配空间后是否put键值对),若没有内容则true,否则false

== null是判断map是否为null(即是否new分配空间,和其中的键值对没关系),若没有内容则true,否则false

Map map = new HashMap<String ,String>();
System.out.println("判断map是否有内容:"+map.isEmpty());//返回true
System.out.println("判断map是否为null:"+map==null);//返回false
 Map map = new HashMap<String ,String>();
 map=null;
 System.out.println("判断map是否为null:"+(map==null));//结果为true
 System.out.println("判断map是否有内容:"+map.isEmpty());//NullPointerException
Map map = new HashMap<String ,String>();
 map.put(null,null);
 System.out.println("判断map是否为null:"+(map==null));//false
 System.out.println("判断map是否有内容:"+map.isEmpty());//false

特此记录以防再犯

日常Bug(9.10)

标签:键值对   service   内容   hashmap   sem   ase   否则   out   class   

原文地址:https://www.cnblogs.com/xiangpeng/p/9617321.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!