作者TonyQ (骨头)
看板java
标题Re: [问题] 如何回收物件?
时间Tue Jul 3 09:31:41 2007
※ 引述《clonn (clonn)》之铭言:
: 帮忙补充一下原PO的内容
: 程式码大约的是
: Frame.add(球的panel.add(球[X]));
-_-;;
果然,虽然你null掉 array[] 的阵列物件,
但是panel已经把物件存下了,那就没搞头啦。
你应该做的是把ballpanel存下,
然後移除的时候做 ballpanel.remove(球[X]),
接着把球[X]null掉。
另外有这种需求的Array最好采用动态阵列(List)结构
: 如果是这样子的方式
: 如果说今天我已经宣告了20个球
: 那我要怎麽把其中一个球回收
: 或者是右後往前回收呢???
: 有用过
: ball[x]=null
: 此方法行不通 会造成bug 或者是鬼档墙
: remove(ball)
: 那不就把所有的球都删除了吗???
: 还是说remove可以指定要删除哪些东西.比较细部的指令?
: PS.这笔程式已经交出去了XD.......
去念念 call by ref 的东西.
container的东西要由container删除,不要假他人之手。~_~
---
Test[] array=new Test[10]; //测试用阵列
ArrayList<Test> al=new ArrayList<Test>();
//模拟ballpanel的container物件
for(int i=0;i<array.length;i++){
array[i]=new Test(i);
al.add(array[i]);
}
//测试开始
array[0]=null; //将阵列0 set null
al.get(0).print(); //没用 , 因为0的参考依然存在,所以0还是会print
System.out.println(al.size());
//真正的删除
al.remove(array[1]);
array[1]=null; //如果是list 直接remove比较节省空间
System.out.println(al.size());
---
class Test{
int k;
Test(int a){
k=a;
}
void print(){
System.out.println(k);
}
}
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *. ╯ ╯ ╯ の 物 语 .*
◥███████──────◣ ~ ◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼
*◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂
~telnet://tony1223.no-ip.info
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.27.68