无法通过迭代器实现next()方法

时间:2014-02-09 16:37:45

标签: java interface

我正在尝试通过接口实现next()方法,但它给了我一个错误。这就是我所拥有的:

private class MyIterator implements Iterator<Term>
{

    private final Polynomial myArray;
    private int current;

    MyIterator(Polynomial myArray) {
        this.myArray = myArray;
        this.current = myArray.degree;
    }

    @Override
    public boolean hasNext() {
        return current < myArray.degree;
    }


    @Override
    public Integer next() { //this method right here does not work
        if (! hasNext())   throw new UnsupportedOperationException();;
        return myArray.coeff[current++];
    }

    @Override
    public void remove() {
        throw new UnsupportedOperationException();
    }
}

next()方法然后抛出这个错误:

error

这是我的界面:

public interface Term {

int coeff();
int exp();
String toString();
}

所以我的问题是为什么界面不允许MyIterator实现next()方法

2 个答案:

答案 0 :(得分:5)

您的班级正在实施Iterator<Term>,因此next()必须返回Term,而不是Integer

修改此行

if (! hasNext())   throw new UnsupportedOperationException();;

错了。如果Iterator没有其他商品,则next()必须投放NoSuchElementException

答案 1 :(得分:1)

Iterator<Term>承诺您的迭代器将返回Term类型的引用,但您的next()方法会尝试返回Integer

需要改变两件事之一以与另一件事保持一致。