Java 为什么不能创建泛型数组?
泛型是 JDK 1.5 中引入的新特性, 首先我们来思考下 java 为什么要引入泛型, 我们看如下代码: List list = new ArrayList(); list.add(55); list.add("dd"); System.out.println(((Integer) list.get(1)) - 5); 这段代码在编译器是没有任何问题的, 可以通过编译, 但是运行时会得到 java.lang.ClassCastException 异常, 如果使用泛型的话, List<Integer> list = new ArrayList<>(); list.add(55); list.add("dd"); // 编译错误 System.out.println(((Integer) list.get(1)) - 5); 到这里我们明白了: java 之所以引入泛型是为了增强程序的安全性和正确性, 以便在编译期就能检查出类型相关的错误. 那么既然这样, 为什么不能使用泛型数组呢? 首先假设如果可以使用泛型数组, 我们看下面一段代码: List<Integer>[] list = new ArrayList<Integer>[10]; // 泛型数组 Object[] objects = list; List<String> stringList = new ArrayList<>