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()。