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);这个怎么理解?好象没看到过呢。
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);这个怎么理解?好象没看到过呢。
booch=new Boochy(this);
调用
public Boochy(Snoochy s){snooch=s;}
只是把自己作为参数传递给新的对象
你可以理解
new Snoochy();
等同于常见的代码:
Snoochy s = new Snoochy();
Boochy b = new Boochy(s);
s.booch = b;这样使得Snoochy 和Boochy 有一个互相指向的引用
一旦气球断了线(引用置为null)成为四处飘游成为垃圾,那么当气球被回收的时候,这粒沙子自然一起被回收。
而至于Boochy中的一个Snoochy类型的参数,可以把它当作一个标识此粒沙子所在的气球的属性。仅此而已。