我已经覆盖了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/