use*_*112 7 java inheritance garbage-collection
我读(某处),finalize()当子类被垃圾收集时,不能保证调用父类,这是否意味着大多数开发人员finalize()在子类中重写并调用super.finalize()?
Jef*_*rey 13
超类不会自动调用Finalize.因此,如果您覆盖finalize,确保超类被清理的正确方法将是
protected void finalize() {
try {
// do subclass cleanup
}
finally {
super.finalize();
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅此参考文章http://www.ibm.com/developerworks/java/library/j-jtp06294/index.html
值得注意的是,终结器不是非常可预测的,并且您无法控制它们何时/何时运行.在finalize方法中不应该做任何关键的事情.一般来说,最好只执行类的显式清理.