Java泛型新原始类型与泛型类型

时间:2018-01-02 14:09:53

标签: java generics

我阅读了很多文章,但我无法理解这两行之间的区别:

ArrayList<String> list = new ArrayList();
ArrayList<String> list = new ArrayList<String>();

唯一的区别是我看到第一行触发了“未经检查的分配”警告。

2 个答案:

答案 0 :(得分:3)

使用未选中的作业,您可以添加不正确类型的对象。什么会导致RuntimeException。例如。你可以将整数添加到列表中。对于类型,这是不可能的。

  ArrayList<String> list = new ArrayList(Arrays.asList(1));
        ArrayList<String> list = new ArrayList<String>(Arrays.asList(1));

第一个被接受,第二个出现编译错误。

答案 1 :(得分:1)

你可以制作一份原始清单。

List list = new ArrayList();

没关系,你现在有了一个原始列表,可以放入任何对象。如果要将该列表分配给键入的版本,则将进行未选中的分配。

List<String> strings = list;

这是因为,列表中的内容从未被检查为字符串。