您好我想为扩展抽象Collection的类实现迭代器。
…
<link rel="import" href="/components/fire-tester/fire-tester.html">
…
<body>
<fire-tester id="fire-tester"></fire-tester>
<script>
(function () {
var ft = document.getElementById('fire-tester');
// make a global v-fire Polymer
var vfire = document.createElement('v-fire');
// custom callback of the Polymer's that will include the v-fire
vfire.onFire = '_updateContent';
/**
* And here, I try to insert the v-fire in the fire-tester Polymer
*/
Polymer.dom(ft.root).insertBefore(
vfire,
Polymer.dom(ft.root).childNodes[0]
);
// the dom is pretty neat, fire-tester contains v-fire with the custom on-fire callback
// then I try to fire the event
vfire.firing(); // but nothing happen
});
</script>
并且Iterator应该看起来像这样
class Name<E extends Comparable<E>>
extends AbstractCollection<CompRational>
implements Iterable<E>{
...
public Iterator<E> iterator(){
return new NameIterator<E>(this);
}
...
}
我收到的错误消息是我的类名称没有覆盖或实现迭代器,并且迭代器不能覆盖迭代器,因为类型不兼容并且它说我使用了两个不同的但是在哪里以及如何以及如何我摆脱它?
PS:感谢所有有用的评论,但我是一个白痴,关键部分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();
}
}
甚至不是问题的一部分。 Sry完全忘了这件事。如果可能请删除。
答案 0 :(得分:2)
没有Collection
工具Iterator
。那是Iterator
实例。您的具体集合需要扩展AbstractCollection
,而NameIterator
实现Iterator
。
class Name<E extends Comparable<E>> extends AbstractCollection {
@Override
public NameIterator<E> iterator() {
return new NameIterator<>();
}
@Override
public int size() {
return 0;
}
}
class NameIterator<E extends Comparable<E>> implements Iterator{
@Override
public boolean hasNext() {
return false;
}
@Override
public E next() {
return null;
}
}