作者lkjh0877 (123)
看板java
标题Re: [问题] 物件销毁
时间Fri Nov 9 18:19:31 2012
※ 引述《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
1F:推 wannawanna:只要还有东西指向你的西瓜 西瓜就不会被销毁 11/09 18:27
2F:→ lkjh0877:了解!感恩 11/09 18:36