java - 从同一个类重写同一个方法两次

标签 java arraylist iterator

我正在理解 iterator() 方法如何与 ArrayList 类一起工作。在 ArrayList 类中,我发现 iterator() 方法被同一个类 AbstractList 重写了两次。

public Iterator<E> iterator() {
    return new Itr();         // Itr is an inner private class of 
                               //   ArrayList which 
                              // implements Iterator interface .
}

public Iterator<E> iterator() {
        return listIterator();
    }

但这怎么可能呢?这里应该有 already defined 的错误。我很困惑。

最佳答案

您看到的第一个 iterator() 方法属于 ArrayList 类,但第二个不是。

属于SubList类,是ArrayList的内部类:

private class SubList extends AbstractList<E> implements RandomAccess {
    ...
    public Iterator<E> iterator() {
        return listIterator();
    }
    ...
}

因此它不会被同一个类覆盖两次。每个类重写它一次。

关于java - 从同一个类重写同一个方法两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44351441/

相关文章:

java - JFreeChart:使用 java.time.LocalDate 或 java.time.LocalDateTime 创建图表

java - ArrayList 的速度是数组的两倍多吗?

java - 将 LinkedList 转换为 ArrayList 以加快并发迭代

java - 将从 HashMap 获取的 ArrayList 转换为 Array

php - PHPs IteratorAggregate 中 getIterator 返回的数组不可遍历

parallel-processing - 不能使用 Rayon 的 `.par_iter()`

Java 注册提供者抛出 EOFException

java - 在整个数据库中搜索一个乱码 `�` - Oracle

rust - 为什么借用的范围不是迭代器,但范围是?

c# - 使用pdfbox打开特定页面中的PDF文件