我需要实现一个返回类型为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<>();