android之List<T>的空指针问题_List的初始化

在使用list做东西的时候出现空指针,查了半天资料本来是这样的 List model; LunchListAdapter adapter;//这是我重写的适配器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setC

大家好,又见面了,我是全栈君。

在使用list做东西的时候出现空指针,查了半天资料

本来是这样的

	List<Restaurant> model;
	LunchListAdapter adapter;//这是我重写的适配器
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		adapter = new LunchListAdapter(LunchList.this, R.layout.row, model);
		model = new ArrayList<Restaurant>();		
		.....//省略}	

重点在倒数两行,本来我把List的初始化放在了onCreate里面,心想应该没有问题的,activity启动之后就会对它初始化了,后来我尝试着在第一行就初始化,结果就不报空指针异常,

后来发现,在初始化之前竟然把他当参数传了出去,结果就导致了空指针异常.

修改如下,初始化在前,使用在后:

 List<Restaurant> model;
	LunchListAdapter adapter;//这是我重写的适配器
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
                  model = new ArrayList<Restaurant>();
		adapter = new LunchListAdapter(LunchList.this, R.layout.row, model);
				
		.....//省略}

虽然很简单,但还是要总结一下的,空指针害人太深.

对于List的初始化还是有些讲究的.

List是一个接口,这个一看文档便知,所以对它初始化不能new List,而应该使用ArrayList或者LinkList(这些实例化了List接口),

List<T> list = new ArrayList<T>();

而且,如果你确定List里面存放的数据类型,可以直接初始化为这种List,

List<String> list = new LinkedList<String>();

这样能够快速的处理,存取数据就不用再进行类型转换,直接是String就行了,

如果在初始化时是这样的,

List<Object> list = new LinkedList<Object>();

那么在存储时就能存储各种类型的数据了,int,String,Map,甚至是你自己定义的class都可以.

当然这样在存取时候是要进行类型转换的,效率会低一些.

 

还有,关于空指针错误真的是很困扰人的一件事情,所以最好的解决方式就是在使用前 一定要保证完成正确的初始化.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121432.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Spring Boot发生java.lang.AbstractMethodError解决方案

    Spring Boot发生java.lang.AbstractMethodError解决方案Exceptioninthread“main”java.lang.AbstractMethodError问题描述:Exceptioninthread&quot;main&quot;java.lang.AbstractMethodError:org.springframework.boot.context.config.ConfigFileApplicationListener.support…

  • html5里的空心圆柱体,容积及空心圆柱体积.doc[通俗易懂]

    html5里的空心圆柱体,容积及空心圆柱体积.doc[通俗易懂]容积及空心圆柱体积高碑店中心小学段玉红教学目标:1、在巩固圆柱体积的计算公式的基础上,通过对实物的观察认识空心圆柱体(套管),知道各部分名称及之间的关系,掌握套管体积的计算公式。能正确计算套管的体积。2、在研究套管体积计算方法过程中,发现形体之间的关系,引导学生用原有知识解决新问题。培养学生知识迁移的能力。3、通过对计算体积方法的对比,体会有效提高计算正确率的最佳方法,进一步提高学生计算能力…

  • iphone上的设备管理去哪里了_iPhone设备管理在哪里找

    iphone上的设备管理去哪里了_iPhone设备管理在哪里找正常是没有设备管理的选项的,当你的iPhone上有未信任程序(已经安装好的才行,正在下载/安装的都不算)时才会有这个选项设置>通用>设备管理

  • mybatis的逆向工程怎么实现_mybatis逆向工程原理

    mybatis的逆向工程怎么实现_mybatis逆向工程原理复习逆向工程的使用,记录方便以后参考mybatis,一个相对于hibernate的轻量级DAO框架,它的逆向工程可以很方便的从数据库到生成对应的entity和mapper接口。首先准备:准备pom.xml引入mybatisgenerator的jar,若不是maven工程,可以把jar下载下来导进工程的lib下即可01.引入依赖(加入jar)进入ma

  • moxa串口服务器的配置(波特率如何设置)

    MOXA串口服务器产品配置说明附图.doc第一章:准备工作准备工作我们用一条交叉网线把NPort5110和PC机的网口连接起来,并把NPort上电。首先,打开控制面板,网络连接。在本地连接上点右键,选择属性。双击进入Internet协议(TCP/IP),点击“使用下面的IP地址”写入IP地址和子网掩码,记住要和NPORT的IP地址在同一子网段内。如NPORT默认IP为192.168…

  • python输入的字符串转换为数字类型_python字符串转int

    python输入的字符串转换为数字类型_python字符串转intpython数字类型和字符串类型的相互转换实例一、python中字符串转换成数字(方法1)类中进行导入:importstringstr=’555’num=string.atoi(str)num即为str转换成的数字转换为浮点数:string.atof(str)(方法2)直接intint(str)即可。二、数字转换成字符串num=322str=’%d’%numstr即为num转换成的字符串以上这…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号