2013-03-15 61 views
-1

Q1:AT行5,将mess松散对第1行实例化的对象的引用(get覆盖)?Java。对象引用

Q2:在enqueue方法的第3行中,我将mess的引用存储在ArrayList的新“插槽”中。即使对第1行创建的对象的引用将丢失(因为第5行),它也不会被垃圾收集,因为ArrayList仍然指向它?

Q3:执行这7行后,在控制器的队列中应该有2个对象参照两个Messenger对象?

1: Messenger mess = new Messenger(_TYPE1_); 
2: /* ... */ 
3: controller.enqueue(mess); // store the reference inside a Runnable in the queue 
4: /* ... */ 
5: mess = new Messenger(_TYPE2_); 
6: /* ... */ 
7: controller.enqueue(mess); 
+2

投票结束,因为没有真正的问题。顺便说一句,答案是肯定的。但请不要问修辞问题。 – Ingo 2013-03-15 14:21:31

回答

1

A1:是的,它会失去参考。该引用的值(您可以将其看作指针)将被新的Message对象的引用覆盖。总之:mess停止“指向”_TYPE1_,现在“点”在_TYPE2_

A2:根据定义,如果没有引用指向他,则对象符合垃圾收集条件。你在这里回答了你自己的问题。

A3:是的,因为您排队的对象是不同的(在排队时引用不同的对象)。

1

Q1:是的,它只是被重新分配一个新的参考。

Q2:对。

问题3:没错。