【发布时间】:2013-12-10 09:10:58
【问题描述】:
让我解释一下场景。
如果我没记错的话,java 中的Generics 仅用于编译时类型安全。
如果我写
List<String> list = new LinkedList<String>(); // fine
list.add("test"); // fine
这很好。但是 如果我写
List list = new LinkedList<String>(); // fine
list.add(9); // fine
在这里,我创建了 LinkedList 的 String 和 List 变量指向 LinkedList。
它允许将integer 插入list。
现在,Generics 与类型有关。这里Type 是List,我还没有为此写generics,即List<String> list
因此,在创建object 的同时在右侧写入generics 而在左侧不写入不会生成List generic。
那么为什么编译器不会在运行/编译时为以下语句发出警告 ar 异常
List list = new LinkedList<String>();
在java中使用Generics时写这样的语句是不是没用。
【问题讨论】:
-
编译器确实给出了警告:List 是原始类型。对泛型类型 List
的引用应该被参数化