栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Arrays.asList和java.util.Collections的“坑”

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Arrays.asList和java.util.Collections的“坑”

Arrays.asList可以方便的进行数组的创建,但是要注意它的一些“坑”

问题复现
 List list = Arrays.asList("!@#");
 list.add("!23");

以上代码看起来是不是没有问题?返回一个list,然后进行add操作,这很正常啊,但是我们看执行之后的结果:

源码分析

下面进行源码分析:
1、点击asList方法进行源码查看,发现也很正常的,返回一个ArrayList

2、然后点击ArrayList<>(a)进行查看,就不淡定了,这竟然是一个Arrays的内部类,并不是我们平常工具ArrayList,只是名字一样而已。

3、然后发现这个ArrayList内部类没有add方法,只有在它的父类AbstractList来查找add方法,下面是父类的add方法,我们可以发现,直接抛异常了。

总结

除了add方法之外,remove方法也是不支持的

除了上述的Arrays工具类外,java.util.Collections也是如此,如下创建的集合使用的时候都会报错:

所以大家在用Arrays.asList和Collections方法创建list的时候,确保该list只能用来读,不能进行更新的操作。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023338.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号