You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么IntelliJ无法识别我已重写的hasNext()方法?

问题原因与解决方案

核心错误点

你错误地让ResizingArrayStack类实现了Iterator<Item>接口,而你实际需要实现的是Iterable<Item>接口:

  • Iterable<Item>是标记集合可被迭代的接口,仅要求实现iterator()方法返回迭代器实例,你已经完成了这个方法的编写,只需要修改类的接口声明即可。
  • Iterator<Item>是迭代器本身的接口,要求实现hasNext()、next()等迭代逻辑方法,你已经在内部类ReverseArrayIterator中正确实现了这个接口,不需要让外层栈类也实现它。

修复代码

仅需要修改类声明行即可解决IDE报错:

// 修改前(错误)
public class ResizingArrayStack<Item> implements Iterator<Item>
// 修改后(正确)
public class ResizingArrayStack<Item> implements Iterable<Item>

额外隐藏问题提醒

你的代码里还有两处笔误,后续运行也会报错,建议同步修改:

  • 内部类ReverseArrayIterator中private int i = size();:你定义的成员变量是private int size = 0,如果没有单独实现size()方法,直接改为private int i = size;即可。
  • next()方法中return a[--i];:你的数组变量命名为array,此处改为return array[--i];即可。

内容的提问来源于stack exchange,提问作者LiuYuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:18:03