class Snoochy{
Boochy booch;
public Snoochy(){booch=new Boochy(this);}
}class Boochy{
Snoochy snooch;
    public Boochy(Snoochy s){snooch=s;}
    
    public static void main(String arg[]){
     Snoochy snoog=new Snoochy();
     //System.out.println(booch);
     //System.out.println(snooch);
     System.out.println(snoog);
     snoog=null;
    }
}booch=new Boochy(this);这个怎么理解?好象没看到过呢。

解决方案 »

  1.   


    booch=new Boochy(this);
    调用
    public Boochy(Snoochy s){snooch=s;}
      

  2.   

    这个用法很正常啊,没有什么可奇怪的吧
    只是把自己作为参数传递给新的对象
    你可以理解
    new Snoochy();
    等同于常见的代码:
    Snoochy s = new Snoochy();
    Boochy b = new Boochy(s);
    s.booch = b;这样使得Snoochy 和Boochy 有一个互相指向的引用
      

  3.   

    Snoochy如果是一个气球,Boochy就是气球内部的一粒沙(因为Boochy是在Snoochy中创建的)。
    一旦气球断了线(引用置为null)成为四处飘游成为垃圾,那么当气球被回收的时候,这粒沙子自然一起被回收。
    而至于Boochy中的一个Snoochy类型的参数,可以把它当作一个标识此粒沙子所在的气球的属性。仅此而已。