我正在尝试通过接口实现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()方法然后抛出这个错误:
这是我的界面:
public interface Term {
int coeff();
int exp();
String toString();
}
所以我的问题是为什么界面不允许MyIterator实现next()方法
答案 0 :(得分:5)
您的班级正在实施Iterator<Term>
,因此next()
必须返回Term
,而不是Integer
。
修改此行
if (! hasNext()) throw new UnsupportedOperationException();;
错了。如果Iterator
没有其他商品,则next()
必须投放NoSuchElementException
。
答案 1 :(得分:1)
Iterator<Term>
承诺您的迭代器将返回Term
类型的引用,但您的next()
方法会尝试返回Integer
。
需要改变两件事之一以与另一件事保持一致。