抱歉,如果有人问过这个问题。

我有以下情况:

public class Distress{
    private static Distress distressIns;

    private MyFirstClass aClass;
    private MySecondClass bClass;

    private Distress(){
       aClass = new MyFirstClass();
       bClass = new MySecondClass();
    }

    ///update: this is a singleton class
    public static getIns(){
        if (distressIns == null){
            distressIns = new Distress();
         }
        return distressIns;
    }

    public static destroyIns(){
        distressIns = null;
    }
}


在上述情况下,如果有人呼叫destroyIns()aClassbClass也会变成null吗?

最佳答案

不会。首先,可能有人坚持引用distressIns(毕竟getIns()方法是公开的,因此可能会有另一个引用)。

其次,变量不会仅仅因为它们被垃圾收集而“变为空”。再次取决于是否存在另一个引用,对象是否可以被垃圾回收。

09-30 12:44