Re: [問題] 物件銷毀
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《lkjh0877 (123)》之銘言:
: : 小弟在寫程式的時候遇到了一個問題
: : 找了幾天了還是找不到解答
: : 所以上來請教一下各位大大
: : 假設我今天寫了一個自定類別A
: : A a1 = new A();
: : A a2 = new A();
: : List<A> list = new Array<A>();
: : list.add(a1);
: : list.add(a2);
: : list.clear();
: : 在整段程式做完之後
: : list內值雖然都已經是null了
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 請問你怎麼知道 list 內值(假設是「內的值」的縮小)是 null
: : 但為什麼a1和a2卻不是null?
: 農夫種出兩顆西瓜,分別叫西瓜甲跟西瓜乙
: 然後他找了一個籃子,把西瓜甲跟西瓜乙放進去
: 接著他又把籃子清空(至於西瓜是用倒的還是搬的不重要)
: 請問一下,西瓜甲跟西瓜乙會因為離開籃子
: 而就變得不是西瓜嗎?
: [卡司表]
: 籃子 = List
: 西瓜 = A
: 西瓜甲 = a1
: 西瓜乙 = a2
先為打錯字道歉...
我是用degugger觀察list裡面的內容的
而且我上網找arraylist的source code裡面的clear method是長這樣:
modCount++;
// Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
因此我當初認為西瓜是會直接被銷毀的
顯然我必須要再去看一下add的方法
那假如我今天要將已放進西瓜籃的西瓜銷毀
可以透過從西瓜籃裡拿出來的?還是只能從原本的a1、a2?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.133.76.30
推
11/09 18:27, , 1F
11/09 18:27, 1F
→
11/09 18:36, , 2F
11/09 18:36, 2F
討論串 (同標題文章)