java - Object 类型的 Finalize() 方法不可见?

标签 java finalize

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

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

但是, eclipse 给了我一个提示

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

我很困惑,因为类型 Object 有一个 protected final方法,它应该是它自己可见的?我到底有错吗?

最佳答案

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

它会是这样的:

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

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

关于java - Object 类型的 Finalize() 方法不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22117656/

相关文章:

java - 如何包装Spring bean

java - 查找数组中的字符

java - TCP/IP 应用程序 Keepalive 大小和带宽开销

java - 如何让我的 ContainerRequestFilter 在 @ServerEndpoint onOpen 上调用?

java - 优雅地完成 SoftReference 引用对象

java - 为什么在重写 finalize 方法时引用不放入引用队列

java - 在这种情况下,什么时候会对我的类实例调用 Finalize() ?

java - ExecutorService.shutdownNow() 不关闭线程

java - Java中finalize方法抛出异常,Java文档中矛盾?

java - 为什么 Netbeans 警告我完成?