小编use*_*Ash的帖子

如何用类之间的相互依赖关系替换 Java 11 项目中已弃用的 Finalize() 方法

我有一个涉及多个类的 Java 11 项目。在当前场景中,我的 2 个类(A 和 B)实现了 java Finalize() 方法,该方法现已永久弃用。我知道该方法可能不会在不久的将来被删除,但我认为最好立即找到 Finalize 的替代方法。

A类中的finalize()主要关注于销毁一个受保护的成员变量long类型的对象,并将某些消息打印到日志中。B 类中的 Finalize() 只是将某些消息打印到日志中。

类 A 的实例是从其他几个类创建的,类 B 扩展了另一个类 ClassLoader。(下面包含代码片段。)

我经历了很多建议,例如,

这些一开始就没有得到很好的解释,即使解释得很好,这些示例也特定于单类项目,并且主方法存在于同一类中。我无法继续使用我在网上找到的最小解决方案。

经过我的研究,带有 try-with-resources 的 Autocloseable 似乎是我的最佳选择。我知道我的类 A 和 B 应该实现 Autocloseable,而被调用者(这里有点不确定)应该使用 try-with-resources。

我将不胜感激任何有助于简化这个问题的帮助,即使它是为了填补我对这个场景的理解中可能存在的空白。

A.java

class A
{
    protected long a_var;
    protected A(String stmt, boolean isd)
    {
        // a_var is initialized here
    }

    public void finalize()
    {
        if(a_var != 0)
        {
            log("CALL destroy !");
            destroy(a_var);
            log("DONE destroy !");
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java finalize deprecated try-with-resources autocloseable

5
推荐指数
1
解决办法
2667
查看次数