2013-01-23 27 views
1

我重寫finalize()方法做了一些工作,同時再次聲稱objects.But某人的內存空間說我必須調用父類的finalize()在重寫finalize() method.But 構造自動調用它超不同於finalize()方法的類構造函數爲什麼finalize()不會像java中的構造函數那樣自動調用它的父類finalize()?

你能給我點什麼嗎?

+0

應該足以滿足您的推力.. http://howtodoinjava.com/2012/ 10/31 /爲什麼不使用finalize-method-in-java/ – lokesh

+1

同樣值得一讀:http://stackoverflow.com/questions/158174/why-would-you-ever-implement-finalize – assylias

回答

8

它被定義在Java Language Specification #12.6(重點煤礦)這種方式:

在Object類中聲明的finalize方法不採取任何行動。類Object聲明finalize方法的事實意味着任何類的finalize方法總是可以爲其超類調用finalize方法。除非程序員有意使超類中的終結器的操作無效,否則應該始終這樣做。 (不像構造函數,終結不會自動調用終結了超;這種調用必須被明確地編碼

+0

+ 1因爲finalize()是一種方法,並且方法默認情況下不會調用其超類的實現。鑑於最終確定應儘可能避免添加特殊行爲也不可能是一個好主意。 –

相關問題