我有一个单例类,它的实例在我的项目中的许多地方被引用。现在我看到一个这样的地方,其中单例实例被赋予NULL引用。
问题是:1。它是否会指向其他地方的空参考? 2.如果是这种情况,我该如何避免这种情况?
以下是代码段。
public enum Test {
INSTANCE;
public void fun(){
System.out.println("hello");
}
}
public class Main {
public static void main(String[] args) {
Test test = Test.INSTANCE;
test.fun();
test = null;
test.fun();
}
}
答案 0 :(得分:2)
不,只有test
中的局部变量main
设置为null。
Test.INSTANCE
仍然指向单个全局实例。由于它是一个枚举,你甚至不能强迫Test.INSTANCE
为空。
但请考虑以下(反)示例,了解如何将静态引用重置为null:
public class Test {
public static Test INSTANCE = new Test();
public void fun(){
System.out.println("hello");
}
}
public class Main {
public static void main(String[] args) {
Test test = Test.INSTANCE;
test.fun();
test = null; // test is null, but Test.INSTANCE still points to the global instance
Test.INSTANCE = null; // now even Test.INSTANCE is null
}
}