我在我编写的类的主方法中尝试了以下代码:
public static void main(String[] args){
...
Object s = new Object();
s.finalize();
...
}
然而,日食给了我一个提示
The method finalize() from the type Object is not visible
我很困惑,因为Object类型有一个受保护的finalized方法,它应该是自己可见的?反正我错了吗?
答案 0 :(得分:4)
Object#finalize()
是一种protected
方法。你不能这样称呼它。类的protected
成员由其直接子类继承。您可以在this
引用的直接子类中访问它,但不能直接使用该类的引用。
就像这样:
class Demo {
public void test() {
this.finalize();
}
}
顺便说一句,你为什么要调用它?在对象从内存中完全删除之前,JVM会自动调用该方法来清除对象正在使用的任何资源。
答案 1 :(得分:0)
finalize()
方法。
如果你有一个自定义类,那么你可以override
这个方法来做某事
您不应该直接调用此方法。 JVM的垃圾收集器会自动为您完成
并且您不应该依赖finalize()
方法来清除任何资源,因为在执行程序期间可能永远不会发生这种情况。
答案 2 :(得分:0)
protected
表示只有在与Object相同的包中才能访问该方法。并且对象在包中:java.lang.Object
您的程序在包com.yourpackage.something
==>中你不能从你的包中访问它