当前位置: 首页 > 知识库问答 >
问题:

JVM的意思是调用main()和finalize()两者,一个是public,另一个是protected?为什么?

谷梁煌
2023-03-14

我在搜索object类中受保护的finalize方法的答案,我偶然发现了这个答案,最后感到困惑,因为我发现了object类的finalize()方法。据说:它不是公共的(或默认访问),因为当对象被垃圾收集时,它应该由JVM内部调用——它不应该由其他任何东西调用。

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

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

有人能帮我把这张照片弄清楚吗?先谢谢了。

共有2个答案

仲孙鸿飞
2023-03-14

答案是,有时您可能想从Java代码中调用另一个项目的main方法。对于finalize来说,情况并非如此

浦墨竹
2023-03-14

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

与此相反,自己调用任何对象的< code>finalize都是危险的,几乎肯定会破坏对象的不变量。

 类似资料:
  • 这点我见过提过几次,但我不清楚是甚么意思。你什么时候为什么要这么做? 我知道接口是做什么的,但我不清楚这一点的事实使我认为我错过了正确使用它们。 如果你要做: 您可以使用任何实现的类?你什么时候需要这么做?我唯一能想到的是,如果您有一个方法,但您不确定会传递什么对象,除了它实现。我想不出你需要多长时间这样做一次。 另外,如何编写一个方法来接受一个实现接口的对象呢?有可能吗?

  • 我知道容器可以有其他参数,如填充或装饰,但如果我不使用这些,为什么我要使用SizedBox而不是容器? 它们之间存在性能差异?

  • 我运行了几个测试场景,其中我从SOAP客户端调用远程系统的SOA服务,并遇到了各种远程异常。你能帮我确定每个错误意味着什么吗- 1) java.net网站。ConnectException:连接被拒绝“ 2)Java . net . socket time out异常:连接超时" 3) 连接异常: 连接超时”

  • 使用以下方法和构造函数编写一个类MyInts.java。 1- 大小为 25 的整数数组作为私有字段 2-采用整数字符串并将其存储在int数组中的构造函数 3-复制构造函数 4-一个Add方法,它将参数1 MyInt作为参数,并将其添加到调用对象并返回结果。 5-检查2个MyInt变量是否相等的方法是相等的。 6-一个方法compareTo,如果调用对象小于参数,则返回-1,如果调用对象大于参数,

  • 问题内容: 为什么Catch(Exception)一个坏主意? 问题答案: 因为当你捕获异常时,你应该正确处理它。而且,你不能期望在代码中处理所有类型的异常。同样,当你捕获所有异常时,你可能会得到一个无法处理的异常,并阻止堆栈中位于较高位置的代码正确处理它。 一般原则是捕获可能的最特定类型。