Java的。对象引用

时间:2013-03-15 14:18:15

标签: java android

Q1:在第5行,mess是否会松开对第1行实例化的对象的引用(被覆盖)?

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

问题3:在执行这七行之后,在控制器的队列中应该有两个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 个答案:

答案 0 :(得分:1)

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

Q2:对。

问题3:对。

答案 1 :(得分:1)

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

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

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