public class RandomizedQueue<Item> implements Iterable<Item> {
private Item[] s;
private int N;
public Iterator<Item> iterator() {
return new RQIterator<Item>();
}
private class RQIterator<Item> implements Iterator<Item> {
private Item[] copy;
private int newItems;
public RQIterator() {
copy = (Item[]) new Object[N];
for (int i = 0, k = 0; i < s.length; i++) {
if (s[i] != null)
copy[k++] = s[i];
}
newItems = N;
}
//hasNext(), next(), remove() methods..
}
}
在copy[k++] = s[i]
行上,我收到错误:类型不匹配:无法从项目转换为项目,但我无法弄清楚出了什么问题。有人能说出来吗?谢谢!
答案 0 :(得分:3)
您的内部类RQIterator
声明了一个新类型参数Item
,该参数与其封闭类Item
声明的类型参数RandomizedQueue
不同。
但是,Item
中的RandomizedQueue
类型参数仍在范围内,因为作为嵌套类的RQIterator
不是static
嵌套类。只需使用Item
中的RandomizedQueue
。
private class RQIterator implements Iterator<Item> {
在iterator()
中创建迭代器也不需要类型参数。
public Iterator<Item> iterator() {
return new RQIterator();
}