从Java中的LinkedList构造函数实例化List

时间:2015-10-08 12:28:07

标签: java list linked-list

我需要实现一个返回类型为List<List<String>>的函数,并尝试了很多方法来实例化要返回的变量:

这不起作用:

List<List<String>> result = new LinkedList<LinkedList<String>>();

error: incompatible types: LinkedList<LinkedList<String>> cannot be converted to List<List<String>>

最后,这有效:

List<List<String>> result = new LinkedList<>();

编译器对此很好,代码运行良好。

但是,我不明白为什么第一个陈述不起作用,为什么第二个陈述不起作用。

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

第一种方式在语法上是错误的,正确的是

    List<LinkedList<String>> result = new LinkedList<LinkedList<String>>();

在第二种情况下,您可能正在使用JDK 7或+,其中使用菱形运算符进行类型推断。

完全理解Type Inference for Generic Instance Creation

例如,请考虑以下变量声明:

Map<String, List<String>> myMap = new HashMap<String, List<String>>();
  

在Java SE 7中,您可以使用一组空类型参数(&lt;&gt;)替换构造函数的参数化类型:

Map<String, List<String>> myMap = new HashMap<>();