为什么接口不能扩展Iterator?

-3 java iterator

我正在尝试为ArrayList实现Iterator.我有一个ArrayList的接口,我也希望它实现Iterator,所以我可以在实际的ArrayList类中提供实现.界面如下:

public interface AListInterface<T> extends Iterator<T> {

       add();
       remove();
       ......

}
Run Code Online (Sandbox Code Playgroud)

但是我收到错误说我必须导入java.util.Iterator.所以我很困惑,我想曾经导入过一个类,然后我可以使用已经实现的所有方法,如扫描仪.那么导入Iterator接口的重点是什么呢?同时还需要提供实现?

而且,如果我将AListInterface的标题更改为:

public interface AListInterface<T> extends Iterable<T> { }
Run Code Online (Sandbox Code Playgroud)

它编译得很好,为什么可以扩展Iterable而不是Iterator?

use*_*421 5

为什么不能接口extends Iterator

它可以.例如,参见java.util.ListIterator.

但我得到的错误说我必须导入java.util.Iterator.

所以导入它.

所以我很困惑

我同意.

我想曾经导入过一个类,然后我可以使用已经实现的所有方法,如扫描仪.

不,它主要意味着您可以无限制地使用该类的名称.

那么导入Iterator接口有什么意义呢

所以你可以Iterator不用限定地使用这个名字.

同时还需要提供实施?

你没有.你正在定义一个界面.无需方法实现.提供方法实现与导入无关.

为什么延伸Iterable而不是Iterator

因为你必须已经导入它.