登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Java中初始化固定大小List的两种方式对比——别让null对 ...
Java中初始化固定大小List的两种方式对比——别让null对象害你NullPointerException
[ 复制链接 ]
游瞠离
2025-6-24 13:39:23
//方法1
int fixedSize = 5;
List<RcGroupConfEntity> list = new ArrayList<>();
// 初始化固定个数的对象并放入 list2
for (int i = 0; i < fixedSize; i++) {
RcGroupConfEntity entity = new RcGroupConfEntity();
list2.add(entity);
}
//方法2
List<RcGroupConfEntity> list = new ArrayList<>(Arrays.asList(new RcGroupConfEntity[5]));
的区别
复制代码
最开始我使用的是第二种,但是一直 list.get(i).setxxx报错,我纳闷了, 我对象有的啊,为啥还是给我报错???
在 Java 开发中,我们经常需要初始化一个固定大小的 List,比如用于占位、批量处理等场景。然而,很多开发者在使用 Arrays.asList(new T[n]) 初始化 List 时,会不小心踩坑,导致后续调用 .setXXX() 方法时出现空指针异常。
本文将通过代码示例,详细对比以下两种初始化方式的区别:
使用循环逐个添加新对象(推荐)
使用数组转换成 List(快捷但有陷阱)
一、方式一:循环添加对象(推荐)
int fixedSize = 5;
List<RcGroupConfEntity> list2 = new ArrayList<>();
for (int i = 0; i < fixedSize; i++) {
RcGroupConfEntity entity = new RcGroupConfEntity();
list2.add(entity);
}
复制代码
✅ 特点:
特性描述每个元素都是真实存在的对象✅ 可以直接调用 .setXXX() 方法安全性高✅ 不会出现空指针异常灵活性好✅ 可根据索引或逻辑动态构造不同对象
示例:为每个对象赋初始值
for (int i = 0; i < fixedSize; i++) {
RcGroupConfEntity entity = new RcGroupConfEntity();
entity.setGroupName("组" + (i + 1));
list2.add(entity);
}
复制代码
二、方式二:数组转 List(快捷写法)
List<RcGroupConfEntity> list2 = new ArrayList<>(
Arrays.asList(new RcGroupConfEntity[5])
);
复制代码
❌ 注意事项:
特性描述所有元素初始为 null❌ 调用 .get(i) 返回 null本质是一个“装箱”操作✅ 把一个数组包装成 List适合占位/预分配⚠️ 但需要后续手动填充对象
❌ 使用时容易出错:
list2.get(0).setPersonConfList(...); // ❌ NullPointerException
复制代码
因为 list2.get(0) 是 null。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
游瞠离
2025-6-24 13:39:23
关注
0
粉丝关注
18
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9986
背竽
9992
猷咎
9990
4
凶契帽
9990
5
里豳朝
9990
6
处匈跑
9990
7
黎瑞芝
9990
8
恐肩
9988
9
终秀敏
9988
10
杭环
9988
查看更多