使用Arrays.asList{}遇到的坑

本文记录了一个在项目中使用Arrays.asList添加集合数据时遇到的隐藏问题。由于测试数据的特定性,功能在测试环境中未暴露问题,但在生产环境中导致接口报错。经过排查,发现错误源自于对Arrays.asList特性的误解。此博客旨在提醒开发者注意此类陷阱,确保代码健壮性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一次,在项目中,使用Arrays.asList{…}实现集合数据添加,代码如下

List<String> kVal=cardMap.get(dto.getIdCard());
if(kVal!=null && kVal.size()>0){//一个人可能有多个岗位
    kVal.add(dto.getVal());
    cardMap.put(dto.getIdCard(),kVal);
}else {
    List<String> val=Arrays.asList(dto.getVal());
    cardMap.put(dto.getIdCard(),val);//123-{"电工"}
}

因为测试环境中的测试数据原因,测试过程中,不会进去size>0的代码块中,从而功能测试通过,当项目发到生产环境上时候,接口报错,通过查看日志,定位到是kVal.add(dto.getVal());此处发生错误,开始我以为是dto对象为null的原因,通过sql查询,发现并不存在为null的情况,正当我一筹莫展的时候,公司架构师看到的此处的代码,给我发来一张截图,此刻我才恍然大悟。
在这里插入图片描述
借此记录,以便大家可以避坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值