【发布时间】:2015-06-05 11:41:41
【问题描述】:
您好,我想为扩展抽象集合的类实现迭代器。
class Name<E extends Comparable<E>>
extends AbstractCollection<CompRational>
implements Iterable<E>{
...
public Iterator<E> iterator(){
return new NameIterator<E>(this);
}
...
}
Iterator 应该是这样的
class NameIterator<E extends Comparable<E>> implements Iterator<E>{
private Name<E> tree;
private int pos = 0;
public NameIterator ( Name<E> t) {
...
}
@Override
public boolean hasNext() {
...
}
@Override
public E next () {
...
}
@Override
public void remove(){
throw new UnsupportedOperationException();
}
}
我收到的错误消息是我的类 Name 没有覆盖或实现 Iterator 并且迭代器无法覆盖迭代器,因为类型不兼容,它说我使用了两个不同的,但是我在哪里、如何以及如何获得摆脱它?
PS:感谢所有有用的 cmets,但我是个白痴,AbstractCollection<CompRational> 的关键部分甚至不是问题的一部分。 Sry 完全忘记了这一点。如果可能,请删除它。
【问题讨论】:
-
实际上你想做什么来实现 2
Iterators?为什么你想让这两个类都实现Iterator? -
您可能希望在第一个中实现 Iterable
。不是迭代器 . -
是的,公共类应该是可迭代的而不是迭代器。但我在实际代码中这样做了。
-
The answer to your question is here。另一个问题使用
Comparable作为普通的超级接口,而不是Iterable,但是问题是一样的 -
谢谢,但我不认为这是问题所在。我只是使用了一个现有的类型,我缩进了另一个通用的 E。Sry 在编写问题时没有意识到这个错误。
标签: java generics iterator overriding abstract