Re: [問題] 如何回收物件?
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 7 之 8 篇):