正如主题所说:可以再次引用未引用的对象吗?
我在http://www.javatpoint.com/corejava-interview-questions-4 Q120遇到了这个问题。我为此尝试了Google搜索,但未找到任何链接。我们实际上是如何做到的?

最佳答案

下面的示例不是“狂野的”示例,而是演示了如何使用finalize方法“取消引用”未引用的对象。这只能发生一次。如果第一个实例的对象第二次变为未引用,则不会再次调用finalize()方法。

public class Resurrect {

    static Resurrect resurrect = null;

    public static void main(String[] args) {
        Resurrect localInstance = new Resurrect();
        System.out.println("first instance: " + localInstance.hashCode());

        // after this code there is no more reference to the first instance
        localInstance = new Resurrect();
        System.out.println("second instance: " + localInstance.hashCode());

        // will (in this simple example) request the execution of the finalize() method of the first instance
        System.gc();
    }

    @Override
    public void finalize() {
        resurrect = this;
        System.out.println("resurrected: " + resurrect.hashCode());
    }
}

关于java - 可以再次引用未引用的对象吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27743096/

10-09 20:02