new ArrayList<>() 和Arrays.asList(数组)两个返回的list,有的api不能共用

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class TestList {
    public static void main(String[] args) {
        // 正常的创建的集合
        List<String> list1 = new ArrayList<>();
        list1.add("1");
        list1.add("2");
        System.out.println("list1 = " + list1.size());

        // 数组转的集合
        String[] st1 = {"1", "2", "3"};
        List<String> list2 = Arrays.asList(st1);
        list2.add("4");
        System.out.println("list2 = " + list2.size());
    }
}

编译时不报错,运行时报错,原因是:虽然返回的List的都继承了AbstractList<E>,

但new ArrayList<>对某些方法做了重写,而Arrays.asList(st1)只做了继承,没有重写,

所以运行时会报异常。

原文地址:https://www.cnblogs.com/nginxTest/p/13600868.html