Arrays.asList 返回值类型


public static void main(String[] args) {
        Integer[] datas = {1,2,3,4,5};
        List<Integer> list = Arrays.asList(datas);
        list.add(5);
        System.out.println(list.size());
    }

该代码会报错    java.lang.UnsupportedOperationException  ---不支持的操作

那么为什么不支持呢,先看API

再看源码就能很明白问题的所在了

@SafeVarargs
    @SuppressWarnings("varargs")
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a); 
    }

注意!这个返回的ArrayList可不是我们平时用的,而是Arrays的一个内部类

private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable{
/。。。。。。。。。
}

而这个类实现了Serializable接口,这就说明他是可序列化的,正如String一样,不可做更改


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM