黑马程序员技术交流社区

标题: 来分析一下泛型数组 [打印本页]

作者: 冯佩    时间: 2013-2-18 15:20
标题: 来分析一下泛型数组
我想创建一个带泛型的数组,按理说应该创建为: ArrayList<String>[] list = new ArrayList<String>[10];但编译器报错误提示说不能创建一个泛型数组,当我把代码改为:ArrayList<String>[] list2 = (ArrayList<String>[])new ArrayList[10];才规避了不能创建的限制。请分析一下,为什么第一种方式无法创建成功,而后面这种方式却能记录住限定的泛型呢?
作者: 胥文    时间: 2013-2-18 17:19
为什么要限制为String啊
ArrayList[]里面不是只能存储ArrayList
个人觉得这里不需要泛型
作者: 杨玲    时间: 2013-2-18 18:01
呵呵,这个问题有深度,深到java的规则上了,咱还是不浪费为数不多的时间来思考语言规则的问题上吧,至少现在还不是时候!咱叫基础人员嘛,哈
作者: 张晋瑜    时间: 2013-2-18 19:28
我来说吧,不能创建具体化类型的数组对象,这是一条铁律
为什么呢?来看看
假定 new ArrayList<String>[10]合法;在编译擦拭后,就变为了ArrayList[10]型了,数组元素类型为ArrayList型。换句话说也就是,ArrayList<String>[10]和ArrayList<double>[10]在编译擦拭后都是ArrayList[10],这是不是很不合理?:D




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2