获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是null的证实
来源:互联网 发布:吉林大学网络教育录取 编辑:程序博客网 时间:2024/06/06 02:12
在开发过程中,凡是获取到一个集合对象,在利用或者说遍历这个集合对象之前,都要进行是否为null以及size()>0的判断,但是如果size()>0的话,不是就已经可以说明此集合对象不为null吗?为什么多此一举判断集合对象是否为null呢?
原来,如果集合对象为null的话直接调用size()方法会报空指针异常,这显然是不想看到的,所以在调用size()方法之前,要先判断集合对象是否为null,推荐使用commons-collections-XXX.jar包中的CollectionUtils工具类中的静态方法,如:
if (!CollectionUtils.isEmpty(resultList)) { }
同理,如果一个集合为null,则调用length获取长度时会报空指针异常,根据索引获取元素时也会报空指针异常。
@Test public void testListAndArray() { List<String> list = new ArrayList<String>(); System.out.println(list); System.out.println(list.size()); String[] strArr = new String[0]; System.out.println(strArr.length); for (String str : strArr) { System.out.println(str); } System.out.println("over"); }
分析得知:
1.System.out.println(new ArrayList())的结果不是null,而是一对中括号,里面不包含任何元素,size为0,遍历什么也得不到;
2.System.out.println(new String[0])的结果也不是null,而是数组对象,但是数组不包含任何元素,数组的长度为0,遍历什么也得不到。
原址
public void testIsEmpty(){ class Person{} class Girl extends Person{} List<Integer> first = new ArrayList<>(); List<Integer> second = null; List<Person> boy = new ArrayList<>(); //每个男孩心里都装着一个女孩 boy.add(new Girl()); //判断集合是否为空 System.out.println(CollectionUtils.isEmpty(first)); //true System.out.println(CollectionUtils.isEmpty(second)); //true System.out.println(CollectionUtils.isEmpty(boy)); //false //判断集合是否不为空 System.out.println(CollectionUtils.isNotEmpty(first)); //false System.out.println(CollectionUtils.isNotEmpty(second)); //false System.out.println(CollectionUtils.isNotEmpty(boy)); //true}
原址
阅读全文
0 0
- 获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是null的证实
- 获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是null的证实
- java 判断对象是否为空或者传入集合对象的是否为空,以及判断数组的长度
- 单例获取对象赋值后为null的现象
- [随记]关于判断字符串为NULL和trim后为为空的Util
- js 判断对象为空或者不是对象的方法
- iOS-对象为空的判断(nil、null)
- iOS-对象为空的判断(nil、null)
- iOS-对象为空的判断(nil、null)
- iOS-对象为空的判断(nil、null)
- 46-数组合并和判断集合是否为空的代码以及源代码
- Struts2 ognl判断集合对象是否为空的方法
- jquery null为空或不是对象
- 消息:'null'为空或不是对象
- 消息: 'null' 为空或不是对象
- JS中“null'document.getElementById为空或不是对象” 的解决办法
- JS中“null'document.getElementById为空或不是对象” 的解决办法
- 出现JS错误提示null为空或不是对象的错误
- VS2012 配置boost1.59
- <胡策day> 10.30 T2 树上的战争(倍增lca)
- 动态资源开发技术
- 李开复给中国大学生的七封公开信(其四)
- 一只“弱鸡”的独白
- 获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是null的证实
- 2017.10.30 測試總結并今日總結
- Java compiler level does not match 问题解决
- 如何在博客转载文章
- JavaWeb学习心得之JDBC入门
- angular不支持file控件的双向绑定怎么破!
- 整理:字符串和数组的转化
- 煎饼UVa120
- elasticsearch5.x集群搭建,ik分词器,head插件