【问题标题】:Unchecked assignment when initializing a list [duplicate]初始化列表时未经检查的分配[重复]
【发布时间】:2016-02-26 06:15:47
【问题描述】:

有什么区别

List<String> list = new ArrayList();

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

在第一种情况下,IDE 突出显示它并显示“未经检查的分配”,但它们的行为似乎完全相同。

【问题讨论】:

  • List&lt;&gt; 是泛型类型,泛型类型应始终与菱形运算符一起使用。您将其用作原始类型,这就是 IDE 抱怨的原因。

标签: java


【解决方案1】:

未指定 ArrayList 中每个条目的类型,仅指定 List,因此出现 Unchecked assignment 警告。您应该以两种方式之一明确声明它...

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

或者,您现在可以将其缩写为(从 Java 7 开始)...

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

...然后编译器将能够从 List 的类型指定中隐式选择类型。

【解决方案2】:

没有区别,java编译器可以判断类型,但最好添加推断类型参数:

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

【讨论】:

  • IDEA 也会抱怨这一点。他会建议 new ArrayList()
  • 有区别。第一个 (new ArrayList();) 是错误的。第二个 (new ArrayList();) 是正确的。 ArrayList() 也可以,但第一个肯定定义不正确。
猜你喜欢
  • 2013-09-21
  • 2020-07-18
  • 2020-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 2012-09-29
  • 2015-09-25
相关资源
最近更新 更多