0

我在我编写的类的主要方法中尝试了以下代码:

public static void main(String[] args){
    ...
    Object s = new Object();
    s.finalize();
    ...
}

然而,日食给了我一个提示,

The method finalize() from the type Object is not visible

我很困惑,因为 Object 类型有一个受保护的最终方法,它应该是自己可见的?反正我错了吗?

4

3 回答 3

4

Object#finalize()是一种protected方法。你不能这样称呼它。类的protected成员由其直接子类继承。您可以在this引用时在该直接子类中访问它,但不能直接使用该类的引用。

它会是这样的:

class Demo {
    public void test() { 
        this.finalize();
    } 
}

顺便说一句,你为什么要调用它?该方法由 JVM 自动调用以清除对象正在使用的任何资源,就在对象完全从内存中删除之前。

于 2014-03-01T17:26:23.420 回答
0

finalize()当一个对象即将被销毁时调用该方法。

如果你有一个自定义类,那么你可以通过override这个方法来做一些事情。
您不应该直接调用此方法。JVM 的垃圾收集器会自动为您完成这项工作。
而且您不应该依赖该finalize()方法来清除任何资源,因为它可能永远不会在您的程序执行期间发生。

于 2014-03-01T17:27:58.010 回答
0

protected意味着只有在与 Object 位于同一个包中时才能访问该方法。并且对象在包中:java.lang.Object您的程序在包中com.yourpackage.something==>您无法从包中访问它

于 2014-03-01T17:28:36.290 回答