我正在尝试为ArrayList实现Iterator。我有一个ArrayList的接口,我也希望它实现Iterator,所以我可以在实际的ArrayList类中提供实现。界面如下:
public interface AListInterface<T> extends Iterator<T> {
add();
remove();
......
}
但是我收到错误说我必须导入java.util.Iterator。所以我很困惑,我想曾经导入过一个类,然后我可以使用已经实现的所有方法,如扫描仪。那么导入Iterator接口的重点是什么呢?同时还需要提供实现?
而且,如果我将AListInterface的标题更改为:
public interface AListInterface<T> extends Iterable<T> { }
它编译得很好,为什么可以扩展Iterable而不是Iterator?
答案 0 :(得分:5)
为什么界面不能
extends Iterator
?
它可以。请参阅示例java.util.ListIterator
。
但是我收到错误说我必须导入
java.util.Iterator
。
所以导入它。
所以我很困惑
我同意。
我认为一旦导入了一个类,那么我就可以使用已经实现的所有方法,如扫描仪。
不,这主要意味着您无需资格即可使用班级的名称。
然后导入Iterator接口的重点是什么
因此,您可以在没有资格的情况下使用名称Iterator
。
同时还需要提供实现吗?
你没有。你正在定义一个界面。无需方法实现。提供方法实现与导入无关。
为什么可以扩展
Iterable
而不是Iterator
?
因为您必须已导入它。