最近代码走查,讨论到数组判空,正好整理一下,记录一下不同数据类型判空方式!
一、String类型数据
String类型数据判空我们一般需要判断是否是 null 或者 "";
例如 String str = null;
对于str的判断我们传统方式有:str != null && str != "" 或者 str != null && !str.isEmpty 或者 str != null && !"".equals(str)
当然还有str != null && str.length>0()也可以,不过今天讲的是另一种方式: StringUtils.isNotBlank(str) 。
StringUtils.isNotBlank(str)我觉得还是挺方便的!
源码:
------------------------------------------------下面是重点-----------------------------------------------------------
说到这里,就得多说两句了,我们往往从Map或者JSON里获得String数据时,往往获得的是OBJECT对象,我们需要转化成String类型!
我们往往用str.toString() 或者 String.valueOf(str) 方式;这两种确实都是可以的,不过这两种各有利弊,第一种如果缺失null判断,会出现空指针异;而第二个,更是容易有隐藏的BUG,当str为null时,String.valueOf(str) 转换后的结果是 str = "null";是的,你没看错,str = 字符串null;String.valueOf(str).length() = 4。所以说这个平时还是需要注意点的!
看源码:
二、List数组判空
与String一样,List数组判空,我们也是要判断是否是 null 或者 空数组;
例如:List list = new ArrayList<String>();
我们平常喜欢用的方式是:list != null && list.size()>0 或者 list != null && !list.isEmpty()
不过今天我们推荐一下apache的CollectionUtils类:CollectionUtils.isNotEmpty(list) 可以同时判断是否为 null 或者空数组。这个我感觉还挺方便的!
看他的源码:
后续有又遇到好的判断就在增加。。。。。。。