【发布时间】:2015-04-04 07:59:02
【问题描述】:
我正在构建自己的 collection 类,以 Java 实现 Iterable 接口。但是,我收到一个编译错误:
Nikolass-MacBook-Pro:week2 nburk$ javac Deque.java
Deque.java:115: error: incompatible types: Item#1 cannot be converted to Item#2
Item currentItem = current.item;
^
where Item#1,Item#2 are type-variables:
Item#1 extends Object declared in class Deque
Item#2 extends Object declared in class Deque.DequeIterator
1 error
以下是我的代码的相关部分:
public class Deque<Item> implements Iterable<Item> {
// return an iterator over items in order from front to end
public Iterator<Item> iterator() {
return new DequeIterator<Item>();
}
private class DequeIterator<Item> implements Iterator<Item> {
public DequeIterator() {
}
public Item next () {
Item currentItem = current.item; // this line causes the ERROR
current = current.next;
return currentItem;
}
}
}
我相信这个问题在某种程度上是由于我以错误的方式使用泛型并且我对Item 的声明可能不正确。但是,我将我的实现与this quick tutorial 进行了比较,并没有看到任何可能导致我这边出现问题的差异。有没有人我错过了什么以及如何摆脱错误?
【问题讨论】:
标签: java generics collections iterator iterable