java中关于泛型与数组的疑问?
为什么代码List<String>[]sa=newList<String>[10];是错误的?...
为什么代码 List<String>[] sa = new List<String>[10];是错误的?
展开
2个回答
展开全部
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);
你可以定义成这样
List<List<String> sa = new List<List<String>>(10);
追问
我主要是想知道为什么不允许这么定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询