class A{
A aob;
public static void main(String args[]){
A a=new A();
A b=new A();
A c=new A();
a.aob=b;
b.aob=a;
c.aob=a.aob;
A d=new A().aob=new A(); //tricky assignement
c=b; //one object eligible GC
c.aob=null;
System.gc();
}
}
有两种对象符合垃圾收集条件,但一种很难理解。
A d=new A().aob=new A();
1)这条线我认为它会做到这一点
A d = new A().aob = new A();
^ ^
O1 O2
O1 --> O2 --> null
^
|
d ----|
2)但真正在做的是这个(所以一个合格的对象)为什么会这样?
A d = new A().aob = new A();
^ ^
O1 O2
O1 --> O2 --> null
^
|
d -----------|
因为分配是从右到左关联的。
A d = ( new A().aob = new A() );
谁能解释一下?谢谢