为什么这段代码出错了?
List<String>[] l = new ArrayList<String>[10];
Eclipse说我无法创建通用数组,但事实上我正在尝试创建一个集合数组。
答案 0 :(得分:2)
它与收藏无关。 (原始)数组构造函数不能采用参数化类型。
尝试
List[] l = new ArrayList[10];
(谢谢@newacct)
答案 1 :(得分:1)
请尝试这样
List<String>[] al = new ArrayList[10];
al[0] = new ArrayList<String>();
al[1] = new ArrayList<Date>(); // Give u error because List accepts only String
答案 2 :(得分:0)
尝试这样:List [] l = new List [10]; 然后将ArrayList(s)添加到List数组中...... 简单数组不能保存泛型信息。早在仿制药之前它就被包含在语言中......
答案 3 :(得分:0)
根据language spec, section 15.10:
“数组创建表达式创建一个对象,该对象是一个新数组,其元素属于PrimitiveType或ClassOrInterfaceType指定的类型。如果ClassOrInterfaceType不表示可重新生成的类型,则为编译时错误。”
由于在编译期间会删除某些类型信息,因此并非所有类型在运行时都可用。在运行时完全可用的类型称为可再生类型。
当且仅当下列之一成立时,类型才可以恢复:
- 它指的是非泛型类或接口类型声明。
...
简单地说,“因为语言说你不能”。我理解保持向后兼容性的最终原因,但我不熟悉细节。