垃圾回收为什么是2个对象?
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);这个怎么理解?好象没看到过呢。
------解决方案-------------------- booch=new Boochy(this);
调用
public Boochy(Snoochy s){snooch=s;}
------解决方案--------------------用了两次new
------解决方案--------------------new 了两次啊
------解决方案--------------------可以理解,但是用法很怪异!
------解决方案--------------------不是很明白
------解决方案--------------------这个用法很正常啊,没有什么可奇怪的吧
只是把自己作为参数传递给新的对象
你可以理解
new Snoochy();
等同于常见的代码:
Snoochy s = new Snoochy();
Boochy b = new Boochy(s);
s.booch = b;
这样使得Snoochy 和Boochy 有一个互相指向的引用
------解决方案--------------------没见过怎么用的?
------解决方案--------------------内存的分配是怎么样的呢
------解决方案--------------------参数传递
------解决方案--------------------标记一下,对这类东西总没耐心琢磨,有需要的时候看看
------解决方案--------------------将自身对象作为参数,去构造另一个对象