2013-03-15 99 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:沒錯。