我正在理解 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/