为abstractCollection实现Iterator

时间:2015-06-05 11:41:42

标签: java generics iterator override abstract

您好我想为扩展抽象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完全忘了这件事。如果可能请删除。

1 个答案:

答案 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;
    }
}