JVM意味着调用main()和finalize()两者,一个是公共的,另一个是受保护的吗?为什么?

时间:2015-08-04 13:09:11

标签: java jvm main finalize

我正在寻找在对象类中保护的finalize方法的答案,我得到了答案,最后因为我发现对于对象类的finalize()方法感到困惑,它已经说过:它不是公共的(或默认访问)因为它意味着当对象被垃圾收集时由内部JVM调用 - 它并不意味着被其他任何东西调用。

public static void main(String arr []),这也意味着只能由JVM调用,因为JVM在我的项目之外的类之外,所以要通过JVM访问这个方法,它应该是公共的。

这对JVM和main()有意义,但是finalize()方法的原因与JVM调用的原因相同,它不能公开。

有人可以让我清楚这张照片。提前致谢

2 个答案:

答案 0 :(得分:1)

没有理由阻止普通Java代码调用main方法;事实上,它通常是调用的框架代码,它在执行一些初始化后执行任意类的main方法。

与此相反,自己调用任何对象的finalize是危险的,几乎可以保证打破对象的不变量。

答案 1 :(得分:0)

答案是,有时您可能希望从Java代码中调用另一个项目的main方法。对于最终化

,情况也是如此