目前在看JavaCollectionsFramework的源代码,AbstractList的内嵌类Itr和ListIterator当中有多个以
AbstractList.this开头的语句:
  AbstractList.this.remove(lastRet);
  AbstractList.this.set(lastRet, o);
  AbstractList.this.add(cursor++, o);我对 类名.this.方法名 的用法很费解,他们应该就是在调用AbstractList自身的方法啊:
  public Object set(int index, Object element)
  public void add(int index, Object element)
  public Object remove(int index)
,那么可不可以把AbstractList.this省略掉呢,AbstractList的源代码中除了以上几个地方,在
调用自身的函数时都不明确写出this.XXX(),那么这里的AbstractList.this.XXXX代表什么含义呢?

解决方案 »

  1.   

    楼主看来对Java的内部类机制了解甚少。
    内部类和其外部类有同名的方法,那么在内部类中如果要调用外部类的该方法,当然要用外部类.this.方法()这种形式了。
    如:public class Outer {
    public class Inner {
    public void f() {
    System.out.println("Inner.f()");
    }
    public void g() {
    f();  // 输出Inner.f()
    Outer.this.f();   // 输出Outer.f()
    }
    }
    public void f() {
    System.out.println("Outer.f()");
    }}
      

  2.   

    用this是overload
    不用就是overwrite了
      

  3.   

    AbstractList.this.XXXX代表内部类引用外围类的方法
      

  4.   

    外部类.内部类.XXXX代表在外部类之外调用内部类的方法
      

  5.   

    面对什么样的需求,才需要写inner class呢?