为什么finalize()不会像java中的构造函数那样自动调用其父finalize()?

时间:2013-01-23 07:13:39

标签: java jdk1.6 finalizer

我重写了finalize()方法,在重新声明对象的内存空间的同时做了一些工作。但是有人说我必须在覆盖{{1}的情况下调用父级finalize()。与finalize()方法不同,构造函数自动调用超类构造函数

你能告诉我一件事......?

1 个答案:

答案 0 :(得分:8)

Java Language Specification #12.6(强调我的)中定义了这种方式:

  

在Object类中声明的finalize方法不执行任何操作。类Object声明finalize方法的事实意味着任何类的finalize方法总是可以为其超类调用finalize方法。这应该始终完成,除非程序员打算使超类中的终结器的操作无效。 (与构造函数不同,终结器不会自动调用超类的终结器;必须显式编码这样的调用。