Re: [問題] 如何回收物件?

看板java作者 (骨頭)時間18年前 (2007/07/03 09:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串7/8 (看更多)
※ 引述《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
文章代碼(AID): #16YQR_Ge (java)
討論串 (同標題文章)
文章代碼(AID): #16YQR_Ge (java)