从Java中的LinkedList构造函数实例化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<>();

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

然而,我不明白为什么第一个语句不起作用而第二个语句却起作用了。

有谁能解释一下吗?

第一种方式语法不正确,正确的是

    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中,您可以用一组空的类型参数(<>)替换构造函数的参数化类型:

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

相关内容

  • 没有找到相关文章

最新更新