Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对象字段的java终结

我很难理解JavaSE8语言规范第12.6.1节和第12.6.2节的含义。我正在使用一种产品,其中Java对象管理本机对等点,因此正确地完成(直到我们有机会进行ref队列重写)非常重要

从规范来看,很明显,终结器可能会出现故障。这是可达性,我有一个困难的时间

我相信说明书上说:

class A {
    public Object o = new Object()
    protected synchronized void finalize() throws Throwable { o = null; }
}

class B {
    A a = new A()
    protected void finalize() throws Throwable {
        a.getClass()   // always works: a cannot be null.
        a.o.getClass() // might NPE: a's finalizer might have been run
    }
}

class C {
    A a = new A()
    protected void finalize() throws Throwable {
        synchronized (a) {
            a.getClass()   // always works: a cannot be null.
            a.o.getClass() // always works: a.o cannot be null.
        }
    }
}

上面有4个断言。我将非常感谢您确认它们是真的,或者解释为什么一个或多个是假的


共 (0) 个答案