首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java开发规范01 - 集合篇_Arrays.asList 坑

Java开发规范01 - 集合篇_Arrays.asList 坑

作者头像
小小工匠
发布2021-08-17 16:57:17
发布2021-08-17 16:57:17
3330
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构

Arrays.asList 规则

我们先看下阿里巴巴编程规范中的一条规则:


Code

add - java.lang.UnsupportedOperationException

代码语言:javascript
复制
    /**
     * Arrays.asList的注意事项
     */
   public static void  arraysAsList(){

       List<Integer> list = Arrays.asList(1, 2,3,4,5);
       
       System.out.println(list.contains(2));
       System.out.println(list.contains(6));

       //使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,
       // 它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常

       list.add(8);
       System.out.println(list.contains(8));
       
   }

额 调用 add方法向集合中添加数据,居然抛出了 java.lang.UnsupportedOperationException 异常


源码分析

返回一个 new ArrayList<>(a)

点击去,然后发现居然不是我们常用的 java.util.ArrayList

发现端倪了么?

它也继承了AbstractList类,

重写了抽象父类AbstractList的很多方法,比如刚刚使用的contains方法,但是却没有重写add方法

所以在调用add方法时才会抛出java.lang.UnsupportedOperationException异常。


同样的 remove 、 clear亦然

remove - java.lang.UnsupportedOperationException


clear - java.lang.UnsupportedOperationException

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Arrays.asList 规则
    • Code
      • add - java.lang.UnsupportedOperationException
    • 源码分析
      • remove - java.lang.UnsupportedOperationException
      • clear - java.lang.UnsupportedOperationException
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档