文章目录
Arrays.asList 规则
我们先看下阿里巴巴编程规范中的一条规则:
Code
add - java.lang.UnsupportedOperationException
/**
* 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
本文标题:Java开发规范01 - 集合篇_Arrays.asList 坑
本文链接:https://blog.quwenai.cn/post/6970.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。


















还没有评论,来说两句吧...