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)只做了继承,没有重写,
所以运行时会报异常。