从Object类型的方法finalize()是不可见的?

时间:2014-03-01 17:22:52

标签: java finalize

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

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

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

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

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

3 个答案:

答案 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 ==>中你不能从你的包中访问它