覆盖 Java 中的 finalize() 方法的目的是什么?


finalize() 方法是 Object 类中的 预定义 方法,并且是 受保护的。可以覆盖 finalize() 方法的目的,让对象在垃圾回收对象之前包括清理代码释放系统资源。如果覆盖了 finalize() 方法,则我们有责任显式调用 finalize() 方法。JVM 或任何给定对象 只能调用一次 finalize() 方法。

语法

protected void finalize() throws Throwable

示例

public class FinalizeMethodTest {
   protected void finalize() throws Throwable {
      try {
         System.out.println("Calling finalize() method of FinalizeMethodTest class");
      } catch(Throwable th) {
         throw th;
      } finally {
         System.out.println("Calling finalize() method of Object class");
         super.finalize();
      }
   }
   public static void main(String[] args) throws Throwable {
      FinalizeMethodTest test = new FinalizeMethodTest();
      String str = "finalize() method in Java";
      str = null;
      System.out.println(str);
      test.finalize();
   }
}

输出

null
Calling finalize() method of FinalizeMethodTest class
Calling finalize() method of Object class

更新时间: 02-Jul-2020

1K+ 浏览量

启动你的 职业

通过完成课程获取认证

开始
广告