• ArrayList的源码中,有一个实现了Iterator接口的内部类Itr,其中有两个elementData变量,一个是内部类的属性,一个是外部类的,那么外部类的就必须标识为ArrayList.this.elemtData
  • 注意,不是this.elementData,因为外部类的对象是不能调用内部类的,所以只能用类名.this来区别内部类和外部类的属性。

    //内部类
    private class Itr implements Iterator<E> {
        transient Object[] elementData;
    
        @SuppressWarnings("unchecked")
        public E next() {
            //同名变量
            Object[] elementData = ArrayList.this.elementData;
        }
    }