我想创建一个带泛型的数组,按理说应该创建为: ArrayList<String>[] list = new ArrayList<String>[10];但编译器报错误提示说不能创建一个泛型数组,当我把代码改为:ArrayList<String>[] list2 = (ArrayList<String>[])new ArrayList[10];才规避了不能创建的限制。请分析一下,为什么第一种方式无法创建成功,而后面这种方式却能记录住限定的泛型呢?
我来说吧,不能创建具体化类型的数组对象,这是一条铁律
为什么呢?来看看
假定 new ArrayList<String>[10]合法;在编译擦拭后,就变为了ArrayList[10]型了,数组元素类型为ArrayList型。换句话说也就是,ArrayList<String>[10]和ArrayList<double>[10]在编译擦拭后都是ArrayList[10],这是不是很不合理?:D