编辑:
感谢您指出通用类型不变的讨论。看起来问题出在通用类型部分。 List<E>
其中E
是通用类型,在这种情况下,E
是List<Integer>
,它是Integer
s作为元素的接口,LinkedList<integer>
}是一个对象(Integer
s作为元素)而不是接口。所以它不起作用。
所以这需要分两步完成。我能正确理解吗?
List<List<Integer>> outter_list = new LinkedList<List<Integer>>();
List<Integer> innder_list = new LinkedList<Integer>();
它与父子类案例略有不同。因为在这种情况下,我们将对象实现接口与底层接口进行比较。
我希望他们能让这更容易......
原始问题:
这是来自LeetCode的问题。一个问题可能要求您编写一个返回List<Integer>
的方法。我能做到:
LinkedList<Integer> list;
//code to construct the list here.
return list;
它运作正常。
有一个问题需要返回List<List<Integer>>
及以下
LinkedList<LinkedList<Integer>> list;
//code to construct the lists here.
return list;
这不起作用,导致不兼容的类型错误。我很好奇为什么。
我必须在声明的第一行使用LinkedList<List<Integer>>
才能使其正常工作。至于我的理解,LinkedList<LinkedList<Integer>> list;
是一个实现List<List<Integer>>
的完美的精细对象。为什么它不兼容?