FIN.NOSUPER
要实施 finalize() 方法,应调用 super.finalize()。FIN.* 代码问题报告实施 finalize() 方法遇到了问题。在这种情况下,可以在不调用 super.finalize() 的情况下实施 finalize() 方法。
漏洞与风险
如果超类实施者覆盖了超类终结器,但忘记手动调用超类终结器,则将永远不能再调用超类终结器。这表示,将永远不能针对超类别进行资源清理,从而会导致资源泄露。
示例 1
复制
public class FIN_NOSUPER_Sample_1 {
/*
* no super.finalize() was called
*/
public void finalize() {
System.err.println("finalized");
}
}
针对第 12 行的 finalize 方法报告 FIN.NOSUPER:要实施 finalize() 方法,应调用 super.finalize()。