Java泛型新原始类型与泛型类型[重复]

问题描述 投票:-1回答:2

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

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

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

java generics
2个回答
1
投票

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

List list = new ArrayList();

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

List<String> strings = list;

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


3
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.