是否可以将finalize方法调用为int或vector?

时间:2011-04-30 16:17:53

标签: java garbage-collection

是否可以在Java中将finalize方法调用为int或vector?

4 个答案:

答案 0 :(得分:6)

int不是对象,也没有方法。

java.util.Vector(与任何对象一样)具有finalize()方法,但在对象被垃圾回收时会自动调用它。

你永远不应该编写一个明确要求的finalize()方法,因为那将是对最小意外原则的公然违反。

答案 1 :(得分:3)

我认为有些人“吓坏了”,因为它在这个问题上有很多不正确的假设。

int是一个原语,所以它没有一个finalize方法来调用。

Vector是一个遗留类,在Java 1.2(1998)中由ArrayList替换。它有一个受保护的finalize方法。 protected表示只应从子类调用它。所以你不能轻易访问它。

但是,我不建议您在Vector或任何其他类上调用finalize。如果你有一个你想要调用的函数的finalize方法,那么创建一个执行相同操作的公共方法,而不是调用finalize()

BTW:即使你确实调用了Vector.finalize(),它也没有做任何事情。它继承了Object.finalize(),它是{}

答案 2 :(得分:2)

您的动机是什么?这与垃圾收集有何关系?要使对象可收集,您需要删除对它的所有强引用,调用finalize。

请阅读关于垃圾收集的这一重要参考资料,特别是关于最终确定的部分,A.3.6节The Truth About Garbage Collection

答案 3 :(得分:2)

方法finalize()继承自java.lang.Object。 Java int是一种基本类型,这些类型不被视为对象,因此无法对这些类型调用finalize。