加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

可以在Java中重载finalize()方法

发布时间:2020-12-15 05:12:46 所属栏目:Java 来源:网络整理
导读:我已经读过某个方法,每个方法都可以重载. finalize() 当然是一种方法.但在搜索时我也发现你不能重载这个方法. 所以问题是我们可以重载finalize()方法吗?如果是,那么它是如何实施的? 解决方法 你可以重载finalize方法,这将成功编译: public class Test{ pu
我已经读过某个方法,每个方法都可以重载.

finalize()

当然是一种方法.但在搜索时我也发现你不能重载这个方法.

所以问题是我们可以重载finalize()方法吗?如果是,那么它是如何实施的?

解决方法

你可以重载finalize方法,这将成功编译:

public class Test
{
    public void finalize(String hi)
    {
        System.out.println("test");
    }
}

但是垃圾收集器和JVM不会调用它,因为它将调用没有参数的那个.

GC和JVM将始终使用签名调用finalize

protected void finalize() throws Throwable

解决方法

您可以简单地覆盖finalize并使用参数调用方法:

public class Test
{
    public static void main(String args[])
    {
        new Test();
        System.gc();
    }

    @Override
    public void finalize() throws Throwable
    {
        super.finalize();
        this.finalize("allo");
    }

    public void finalize(String hi)
    {
        System.out.println(hi);
    }
}

这将打印allo.这样你可以在你想要的地方调用finalize(String hi),当你覆盖finalize()调用它时,GC也会调用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读