java - "incompatible types: cannot infer type-variable"为链表

标签 java deque

我从以下代码的第二条语句中得到了不兼容类型的错误:无法推断类型变量E(实际参数列表和形式参数列表的长度不同)

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

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

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

LinkedListArrayDeque 都实现了 Deque 接口(interface)。我很困惑为什么它适用于 ArrayDeque 但不适用于 LinkedList?

最佳答案

区别在于您传递的构造函数:

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 是数组中的索引):

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

关于java - "incompatible types: cannot infer type-variable"为链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58505790/

相关文章:

java - 导入非常大的项目后,Eclipse 操作非常慢

java - logback FileAppender -> AsyncAppender 刷新信号

java - Gson 序列化 Integer 对象

java - 使用 Maven 模块化项目

c++ - 使用 foreach 将多个 wxTextCtrl 的标签设置为空值

java - Deque 删除不会引发 ConcurrentModificationException

c++ - 为什么双端队列比队列快?

Java 等同于 std::deque