作者tkcn (小安)
看板java
標題Re: [問題] object指向null後 class variable怎麼辦?
時間Fri Nov 13 09:57:14 2009
※ 引述《johjimakenji (喬治馬健司)》之銘言:
: 如果想要刪除一個object 就是令它指向null
: 但如果該物件裡包含class varible
: 例如 public static int sum = 0;
: 每new一次這個object就會sum++ 用來計算總共有幾個object
: 但如果把object指向null sum的值並不會改變
: 請問有什麼辦法解決?
: 就是想要刪除這個object並讓sum的值正確
寫個 finalize method 吧,
這樣當 GC 去回收此物件時,就會執行到 finalize 了。
不過要注意一點,
並不是將 reference 設成 null,GC 就會立刻回收該物件。
所以如果你希望將 reference 設成 null 時,sum 能立刻反應,
還是自己寫 --sum 吧。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.183.171
推 SansWord:自己寫--sum就不能寫finalize喔~這兩者是互斥的 11/13 10:52
推 legnaleurc:應該說為什麼對 instance 的操作要動到 static ? 11/13 11:50
→ legnaleurc:這樣的話可能要寫個函式專門去清這些東西 11/13 11:52
→ tkcn:自己寫 --sum 我就不會再 finalize() 裡頭再寫一次 --sum 呀 11/13 12:41
推 cjcat2266:最好自己寫一個destroy(),丟掉物件以前自己呼叫一次 11/13 13:24