前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Arrays.asList()居然抛出了异常!

使用Arrays.asList()居然抛出了异常!

作者头像
码农架构
发布2021-04-22 10:16:39
5200
发布2021-04-22 10:16:39
举报
文章被收录于专栏:码农架构

导读:Arrays此类包含用于操纵数组的各种方法(例如排序和搜索)。在JDK 1.7 版本加入,此类还包含一个静态工厂,该工厂允许将数组视为列表。

把数组转换成List集合,有个很方便的方法

List<String> list = Arrays.asList("a","b","c")

错误场景

当你看到这段代码时可能觉得没啥问题啊!不就是将数组转化成list集合,然后再往集合里面添加元素么~

是的当时你智哥也是这般自信,没有仔细看Arrays.asList(...)的源码,执行下这段代码看下执行结果

抛出不支持请求的操作异常,有点令人意外哈!

代码分析

查看Arrays.asList(...)的源码,

继续看ArrayList然后惊呆了

这个ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList

它是Arrays类自己定义的一个静态内部类,这个内部类没有实现add()、remove()方法,而是直接使用它的父类AbstractList的相应方法。

而AbstractList中的add()和remove()是直接抛出java.lang.UnsupportedOperationException异常的!

其实站在设计者的角度思考,设计的初衷就是要生成一个不可更改的list,保证数据的安全性的场景,比如要生成一个常量list,里面的值都是约定好了的,不能被代码随意修改,这种就很需要这个方法,就算jdk不提供,需要用到的也是会自己生成一个内部类去实现这个的。只是我们使用的时候要留意一些~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 错误场景
  • 代码分析
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档