喵宅苑 MewoGarden × 技术宅社区II | Z站 Z Station 棒棒哒纯文字二次元技术社区

正文

JAVA/Android中关于集合对象的清空、赋值的小tip(个人心得)

作者:wugy315
[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。

回复

九命怪猫

作者:wugy315
九命怪猫 发表于 2016-8-24 14:47 会编程,好厉害的感觉 话说如果新建定义一个值,赋予空值,那是之后就给它运算之类,还是处于空值吗? ...
如果你的意思是声明一个对象然后给它赋值为空的话。那它就是空值,会报空指针异常。不过这个报错的前提是你的运算中有需要用到这个集合中的元素(这要求集合不能为空)
查看回复

好厉害的感觉

作者:九命怪猫
会编程,好厉害的感觉:77: 话说如果新建定义一个值,赋予空值,那是之后就给它运算之类,还是处于空值吗?而且报错吗 其实我完全不会,没接触过Android,只是知道一点点as的
查看回复
上一页
下一页
0%
站点地图友情链接:
喵宅苑
喵空间社区程序
喵宅苑 静态版
宅喵RPG地图编辑器
络合兔
Lanzainc
技术宅
小五四博客
莉可POI
Mithril.js
枫の主题社
Project1
午后少年
机智库
七濑胡桃
xiuno
幻想の日常
魂研社
Nothentai
0xffff
欲望之花
泽泽社长
淀粉月刊
HAYOU