A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯佩 中级黑马   /  2013-2-18 15:20  /  970 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想创建一个带泛型的数组,按理说应该创建为: ArrayList<String>[] list = new ArrayList<String>[10];但编译器报错误提示说不能创建一个泛型数组,当我把代码改为:ArrayList<String>[] list2 = (ArrayList<String>[])new ArrayList[10];才规避了不能创建的限制。请分析一下,为什么第一种方式无法创建成功,而后面这种方式却能记录住限定的泛型呢?

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

3 个回复

倒序浏览
为什么要限制为String啊
ArrayList[]里面不是只能存储ArrayList
个人觉得这里不需要泛型

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
呵呵,这个问题有深度,深到java的规则上了,咱还是不浪费为数不多的时间来思考语言规则的问题上吧,至少现在还不是时候!咱叫基础人员嘛,哈
回复 使用道具 举报
我来说吧,不能创建具体化类型的数组对象,这是一条铁律
为什么呢?来看看
假定 new ArrayList<String>[10]合法;在编译擦拭后,就变为了ArrayList[10]型了,数组元素类型为ArrayList型。换句话说也就是,ArrayList<String>[10]和ArrayList<double>[10]在编译擦拭后都是ArrayList[10],这是不是很不合理?:D

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马