-1

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

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);
4

2 回答 2

1

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

Q2:对。

Q3:对。

于 2013-03-15T14:22:00.177 回答
1

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

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

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

于 2013-03-15T14:23:20.043 回答