[英]Why can't IntelliJ find my overrided hasNext() function?
I think this should be an easy problem, but I just can't solve it.我认为这应该是一个简单的问题,但我无法解决它。 Actually,I'm learning stack with iteration, when I tried to implement interface Iterable, IDE kept warning me for not implementing the method hasNext()
实际上,我正在通过迭代学习堆栈,当我尝试实现接口 Iterable 时,IDE 一直警告我没有实现方法 hasNext()
Here's my code:这是我的代码:
import java.util.Iterator;
public class ResizingArrayStack<Item> implements Iterator<Item>
{
private Item[] array = (Item[]) new Object[1]; //stores the elements
private int size = 0; //number of the elements
/*
Codes that doesn't matter
*/
//implement iterator()
public Iterator<Item> iterator()
{
return new ReverseArrayIterator();
}
private class ReverseArrayIterator implements Iterator<Item>
{
private int i = size();
//I ALREADY IMPLEMENTED IT!
@Override
public boolean hasNext()
{
return i > 0;
}
@Override
public Item next()
{
return a[--i];
}
}
}
And here's what IDE shows:这是 IDE 显示的内容:
Class 'ResizingArrayStack' must either be declared abstract or implement abstract method 'hasNext()' in 'Iterator'
类“ResizingArrayStack”必须声明为抽象或在“Iterator”中实现抽象方法“hasNext()”
I'll really appreciate it if you guys can answer this for me!如果你们能帮我回答这个问题,我将不胜感激!
What I wrote in the inner class was correct, the problem is that, I should have been more strict when define class ResizingArrayStack
.我在内部类中写的是正确的,问题是,我在定义类
ResizingArrayStack
时应该更严格。 It should implements Iterable
instead of Iterator
它应该实现
Iterable
而不是Iterator
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.