java中关于泛型与数组的疑问?

为什么代码List<String>[]sa=newList<String>[10];是错误的?... 为什么代码 List<String>[] sa = new List<String>[10];是错误的? 展开
 我来答
百度网友81ae37efe0
2015-12-06 · TA获得超过159个赞
知道小有建树答主
回答量:239
采纳率:50%
帮助的人:126万
展开全部
public static void main(String[] args) {

    // 不能使用泛型数组

    // Cannot create a generic array of List<String>

    // List<String>[] lists = new List<String>[10];


    // 但是你可以使用集合数组, 如果你非要这样做的话

    List[] test2 = new List[10];


    // 我不确定你这样做的动机是什么, 如果非要使用到泛型集合数组的话, 也可以这样

    // Key: 索引

    // Value: 泛型集合

    // 缺点: 索引需要自己维护

    Map<Integer, List<String>> collectionArray = new LinkedHashMap<Integer,     List<String>>();

}

追问
我是想晓得为什么不能这么做 原因是什么
追答
这个是Java语言的规范, 这是一个硬性约束.
就好比你看一部电影, 在看的时候你不能改变什么, 如果非要改变什么就只能把它拆分开, 再加入一些你自己的东西, 但这时候已经不是原来的电影了.
也就是说, 如果你有能力的话, 你也可以破坏掉(或者说升级)这个约束.
不过就个人而言, Java有这么多人在使用它, 既然出现这样的约束必定有其原因所在.

再者, Java对程序员而言是应用型语言, 而不是研究性语言.
千锋教育
2015-12-06 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
java中不允许定义泛型的数组
你可以定义成这样
List<List<String> sa = new List<List<String>>(10);
追问
我主要是想知道为什么不允许这么定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式