日期:2014-05-20  浏览次数:20740 次

请教 内部类匿名引用问题
请问:
创建内部类的时候会隐式的拥有一个外部类的引用 
我不明白的是 创建内部类的时候 会创建一个外部类 而内部类会拥有这个外部类对象的一个引用 但这个引用根本没有名字啊 怎么拥有这个引用呢
谢谢

------解决方案--------------------
我只知道,可以引用外部类的实例变量,对外部类本身的引用,还不知道,
如果你确实想引用的话


class A{

A a = this;
class B{
a.....
}
}
这样试着看下
------解决方案--------------------
内部类可以直接访问内部类所在的外部类的所有变量(包括私有)和方法,感觉就像使用自己的一样
------解决方案--------------------
因为要先创建外部类才能创建内部类,所以内部类对象就会拥有一个外部类对象的引用,这个引用是隐式的,你可以直接调外部类对象的私有数据和方法,就要调用自己的,所以说是有引用的
------解决方案--------------------
我觉得就是在创建这个内部类之前包含它的那个外部类就先被创建出来了 内部类可以直接调用该外部类的变量和方法(不用写外部类名.变量\方法)
------解决方案--------------------
public class csdntest1{
class test{
csdntest1 csd = new csdntest1();
}
}
------解决方案--------------------
名字就是“外包类名.this”。
------解决方案--------------------
探讨
名字就是“外包类名.this”。

------解决方案--------------------
关注
------解决方案--------------------
学习

------解决方案--------------------
引用楼主 wb821147966 的帖子:
请问:
创建内部类的时候会隐式的拥有一个外部类的引用
我不明白的是 创建内部类的时候 会创建一个外部类 而内部类会拥有这个外部类对象的一个引用 但这个引用根本没有名字啊 怎么拥有这个引用呢
谢谢

------解决方案--------------------
探讨
引用:
名字就是“外包类名.this”。

可能对,这个在thinking in java 就是这么用的阿

------解决方案--------------------
Java code

public class T {
  private int i;

  class TT {
    public void test() {
      T.this.i = 3; // 这2个写法都是正确的
      i = 4;
    }
  }
}