我已经覆盖了finalize()方法来做一些工作,同时又回收了对象的内存空间。但是有人说我必须在覆盖finalize()方法中调用父级的finalize(),但是构造函数会自动调用与finalize()方法不同的超类构造函数。

你能给我一些启发吗?

最佳答案

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


  在Object类中声明的finalize方法不执行任何操作。类Object声明一个finalize方法的事实意味着,任何类的finalize方法都可以始终为其父类调用finalize方法。除非程序员打算取消超类中终结器的操作,否则应始终这样做。 (与构造函数不同,终结器不会自动为超类调用终结器;此类调用必须显式编码。)

关于java - 为什么finalize()不会像Java中的构造函数那样自动调用其父finalize()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14474295/

10-10 14:39