我需要实现一个返回类型为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<>();
编译器对此很好,代码运行良好。
但是,我不明白为什么第一个陈述不起作用,为什么第二个陈述不起作用。
有人可以解释一下吗?
答案 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<>();