方法 finalize() 只能在對象回收后才能由 JVM 進行調用。
盡管 Java 語言規范中允許外部終結器調用對象的 finalize() 方法,但這其實并不是一個好辦法。例如,直接調用 finalize() 意味著要不止一次地調用 finalize() 方法:第一次將會直接調用,而最后一次調用會在對象回收之后執行。
例 1:以下代碼片段直接調用 finalize() 方法:
// time to clean up
widget.finalize();
[1] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 586