简体   繁体   English

为什么 IntelliJ 找不到我覆盖的 hasNext() 函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM