java Arrays.asList
Arrays.asList
相信搞java的基本都用过,但有些坑不一定踩过
坑一
Arrays.asList
返回的List不能进行add
和remove
操作,为什么呢,来看看源码就明白了12345"varargs")(public static <T> List<T> asList(T... a) {return new ArrayList<>(a);}
在这里看,似乎没什么问题,返回一个ArrayList,那怎么就不能进行add
和remove
操作了呢,且看下面代码
原来Arrays.asList
调用以后生成的ArrayList
其实是Arrays
的内部类对象,这个类继承了AbstractList
,这个List的抽象类对get和remove方法都是需要子类自己实现的,来看看AbstractList
的add和remove方法的代码
看到这里就明白了;具体这个ArrayList能做哪些操作,看看他提供出来的API就行了
坑二
- Arrays.asList传入参数是基本类型的话,会把数组当做一个元素,看debug结果: