LinkedList的“不兼容类型:无法推断类型变量”

时间:2019-10-22 13:47:19

标签: java deque

我在以下代码的第二条语句中出现了incompatible type: cannot infer type-variable(s) E (actual and formal argument lists differ in length)错误,

Deque<TreeNode>[] stacks = new Deque[2];
Arrays.set(stacks, LinkedList::new);

但是,用ArrayDeque替换LinkedList可以修复错误,

Arrays.set(stacks, ArrayDeque::new);

LinkedListArrayDeque都实现Deque接口。我很困惑为什么它适用于ArrayDeque而不适用于LinkedList

1 个答案:

答案 0 :(得分:4)

不同之处在于您传递的构造函数:

public LinkedList(Collection<? extends E> c);
public LinkedList();
public ArrayDeque(int numElements);

扩展后,您会得到:

Arrays.setAll(stacks, index -> new LinkedList<TreeNode>(index));
Arrays.setAll(stacks, index -> new ArrayDeque<>(index));

LinkedList没有构造函数采用int index的地方。
要解决您的问题,只需编写(index是数组中的索引):

Arrays.setAll(stacks, index -> new LinkedList<TreeNode>());