java.lang.UnsupportedOperationException(源码学习 Util包 Arrays)

来源:互联网 发布:网络安全教育感想 编辑:程序博客网 时间:2024/06/04 19:37

String[] b={"1","2","3"};List<String> list = Arrays.asList(b);   list.add("4"); 

有些人想要进行上面的操作,结果会出现这个错误


首相来看一下Arrays 这个asList方法的代码的实现

public static <T> List<T> asList(T... a) {return new ArrayList<T>(a);//看下面的ArrayList的定义    }    /**     * @serial include     */    private static class ArrayList<E> extends AbstractList<E>implements RandomAccess, java.io.Serializable    {        private static final long serialVersionUID = -2764017481108945198L;private final E[] a;ArrayList(E[] array) {            if (array==null)                throw new NullPointerException();    a = array;}public int size() {    return a.length;}public Object[] toArray() {    return a.clone();}public <T> T[] toArray(T[] a) {    int size = size();    if (a.length < size)return Arrays.copyOf(this.a, size,     (Class<? extends T[]>) a.getClass());    System.arraycopy(this.a, 0, a, 0, size);    if (a.length > size)a[size] = null;    return a;}public E get(int index) {    return a[index];}public E set(int index, E element) {    E oldValue = a[index];    a[index] = element;    return oldValue;}        public int indexOf(Object o) {            if (o==null) {                for (int i=0; i<a.length; i++)                    if (a[i]==null)                        return i;            } else {                for (int i=0; i<a.length; i++)                    if (o.equals(a[i]))                        return i;            }            return -1;        }        public boolean contains(Object o) {            return indexOf(o) != -1;        }    }


因此我们发现通过asList转换成的list并不能进行添加删除操作


原创粉丝点击