[i=s] 本帖最后由 wugy315 于 2016-8-24 13:43 编辑 写一个Android项目时遇到的问题。 在当前Activity类中声明了一个packageName集合【List<String> packageName = null;】, 而后在onCreat方法中调用该集合对象进行重新赋值【packageName = new ArrayList<String>()】。 同时,在onCreat中设置button监听,当某个button按下后,对当前集合对象添加元素。 而后,在另一个方法中,当packageName集合判断不为空时,执行相关操作并清空该集合对象中的元素。 此处,我清空集合使用的是packageName = null语句,给packageName赋值为空。 这样做乍一看是没有问题的。然而实际上,此时的packageName已经不是之前的ArrayList对象了,而是空对象(null)。 因此。当我再次点击Button时,会报nullPointerException。空指针异常。为什么呢?因为当前对象已经改变了,无法进行元素添加。 所以,当清空集合对象中的元素时,正确的做法是调用clear方法,即packageName.clear()。 只有这样做,才能使得对象不产生变化,当下一次点击button时,还能正常添加元素。 以上。 2016.08.24 ----------------------------- 补充:当packageName = new ArrayList<String>()时,即便集合中无元素,packageName != null。
九命怪猫 发表于 2016-8-24 14:47 会编程,好厉害的感觉 话说如果新建定义一个值,赋予空值,那是之后就给它运算之类,还是处于空值吗? ...如果你的意思是声明一个对象然后给它赋值为空的话。那它就是空值,会报空指针异常。不过这个报错的前提是你的运算中有需要用到这个集合中的元素(这要求集合不能为空)