获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是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