关于List<E>.addAll(Collection<? extends E> collection)传入参数null
2015-03-30 17:29
531 查看
今天关于一个漏洞查了很久,原来是因为List<E>.addAll(Collection<? extends E> collection)传入参数为null产生的。下面就是我解决问题的过程
bug现象是activity有时会出现闪退,于是我查看了logcat,截图如下:
黑色箭头标注处是关键,一般NullPointerException都是由于空指针(null)或者没有初始化产生的,那我再看看下面ArrayList.addAll(),应该是说这个调用这个函数导致了NullPointerException异常的产生,难道是因为ArrayList.addAll()不能传入空指针,函数没有对空指针的情况进行处理,于是我查看了ArrayList.addAll()源码,如下:
由上可知,在ArrayList.addAll()中对传进来的参数没有做null判断,于是,在调用collection.toArray()函数的时候就抛异常了,activity就崩溃了
在使用[b]ArrayList.addAll()的时候一定要注意传入的参数会不会出现为null的情况,如果有,那么我们可以做以下判断[/b]
if (collection!= null)
mInfoList.addAll(Collection<? extends E> collection);
如果为null,就不执行下面的了,作为程序员,我们也不能确保是不是存在null的情况,所以为了确保不会出错,在前面加个判断是一个有经验的程序员该做的。
bug现象是activity有时会出现闪退,于是我查看了logcat,截图如下:
黑色箭头标注处是关键,一般NullPointerException都是由于空指针(null)或者没有初始化产生的,那我再看看下面ArrayList.addAll(),应该是说这个调用这个函数导致了NullPointerException异常的产生,难道是因为ArrayList.addAll()不能传入空指针,函数没有对空指针的情况进行处理,于是我查看了ArrayList.addAll()源码,如下:
由上可知,在ArrayList.addAll()中对传进来的参数没有做null判断,于是,在调用collection.toArray()函数的时候就抛异常了,activity就崩溃了
在使用[b]ArrayList.addAll()的时候一定要注意传入的参数会不会出现为null的情况,如果有,那么我们可以做以下判断[/b]
if (collection!= null)
mInfoList.addAll(Collection<? extends E> collection);
如果为null,就不执行下面的了,作为程序员,我们也不能确保是不是存在null的情况,所以为了确保不会出错,在前面加个判断是一个有经验的程序员该做的。
相关文章推荐
- 关于List.addAll(Collection<E>)方法遇到的问题
- java中addAll(Collection<? extends E> col)方法实例
- 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据
- 网易2009年校园招聘--一道关于<list>的STL题目
- Struts2标签——关于List<Object[]>的操作
- 简析SilverLight的List<T>、ObservableCollection<T>和INotifyPropertyChanged的异同
- List<T>和ObservableCollection<T>的相互转化
- return null 与return new List<HaierPageView>()的区别
- 类型“string”必须是不可以为 null 值的类型才能用作泛型类型或方法“System.Nullable<T>”中的参数“T”
- 关于Ibatis.net ,将List<T> 作为参数的学习笔记
- 关于c++中模板 T 无法限制的替代方案template< T extends Base>
- mybatis在<if>中传入一个简单类型参数的两种写法。
- 3.关于VS2008 中的pDC->TextOut 参数转换问题 <Unicode Character>
- 关于struts2的xml中<result type="redirect">参数问题
- public ArrayList(Collection<? extends E> c)中的 ? 和 E 是什么意思
- 在hibernate中 以Collection<Entity> 替换Map<Key, List<Value>结构
- 关于List<T> :Distinct 和 OrderBy 、GroupBy使用简例
- c# List<T>与ObservableCollection<T>
- 黑马程序员_<<Collection,List>>
- List<? extends Map<String, ?>> 如何理解呢?