为什么界面不能扩展Iterator?

时间:2018-06-18 23:54:22

标签: java iterator

我正在尝试为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?

1 个答案:

答案 0 :(得分:5)

  

为什么界面不能extends Iterator

它可以。请参阅示例java.util.ListIterator

  

但是我收到错误说我必须导入java.util.Iterator

所以导入它。

  

所以我很困惑

我同意。

  

我认为一旦导入了一个类,那么我就可以使用已经实现的所有方法,如扫描仪。

不,这主要意味着您无需资格即可使用班级的名称

  

然后导入Iterator接口的重点是什么

因此,您可以在没有资格的情况下使用名称Iterator

  

同时还需要提供实现吗?

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

  

为什么可以扩展Iterable而不是Iterator

因为您必须已导入它。