是否可以在Java中将finalize方法调用为int或vector?
答案 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。