我重写了finalize()
方法,在重新声明对象的内存空间的同时做了一些工作。但是有人说我必须在覆盖{{1}的情况下调用父级finalize()
。与finalize()
方法不同,构造函数自动调用超类构造函数。
你能告诉我一件事......?
答案 0 :(得分:8)
在Java Language Specification #12.6(强调我的)中定义了这种方式:
在Object类中声明的finalize方法不执行任何操作。类Object声明finalize方法的事实意味着任何类的finalize方法总是可以为其超类调用finalize方法。这应该始终完成,除非程序员打算使超类中的终结器的操作无效。 (与构造函数不同,终结器不会自动调用超类的终结器;必须显式编码这样的调用。)