[Java语言]Map嵌套Set在用get方法得到返回值出现莫名其妙报错(Exception in thread "main" java.lang.NullPointerException)的问题

今天在做软件构造实验------模拟社交图时遇到以下问题:
在网上遍寻无解,无奈只能自己调试。莫名其妙错误图片在网上遍寻无解,无奈只能自己调试。
错误信息显示是在第47行,先看这行的代码。这行代码的功能是将Map table里面键为字符串A对应的Set集合复制给Set集合temp。
首先temp.addAll既然是已有的方法,而且IDEA并没有给出报错,说明错误应该不在这里。所以错误应该在addAll的使用方法或者table.get(A)上。
先将table.get(A)单独拎出来,看看是否仍然报错。
莫名其妙正确图片
并未报错…
难道不是get(A)使用不当?
经过查询资料,get方法返回的是值对应的类型,比如这里返回的是Set类型。一个集合addAll上另一个集合,不应该有错误啊。似乎也不是addAll使用的问题。
此时似乎陷入了僵局…
A Thousand Years Later…
经过大概一个多小时的反复尝试/找其它方法替代,然后在一次偶然,我把对A的操作改成对B 的进行尝试,竟然没有报错!
莫名其妙又正确图片
我们知道,电脑是不应该带着有色眼镜去看变量的,那为什么它偏偏就“歧视”A而偏爱B呢?然后我继续百思不得其解,并且尝试用各种方法把B替换成A然后依旧被报错了将近一小时…
最后发现了罪魁祸首…
罪魁祸首发现了
原来我为了每次编译运行测试时为了少输入两条语句,给Map中进行了初始化赋值,在这里给键A赋的值是null!!!
所以table.get(A)返回为null,那么,addAll能不能输入null呢?
奇怪的知识增加了!!!
果然,第37行若是直接给temp加null会报错,也就是说,addAll()括号里面是不能输入null的!所以在我对初始化进行调整以后,终于揪出并修改好了这个可恶的小bug!(__)(笑着哭)
修改初始化.......

奇怪的bug减少了
今日知识点:addAll(null)会报错!
null要慎用,可能会导致奇怪的,难以找到的bug导致少摸鱼俩小时…
最好不要偷懒,想偷懒自己去写test…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值