gpt4 book ai didi

java - null 引用的 Singleton 类对象

转载 作者:行者123 更新时间:2023-11-30 03:00:01 24 4
gpt4 key购买 nike

我有一个单例类,它的实例在我的项目中的许多地方都被引用。现在我看到这样一个地方,单例实例被分配了 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();
}
}

最佳答案

否,只有 main 中的局部变量 test 设置为 null。

Test.INSTANCE 仍然指向单个全局实例。由于它是一个枚举,因此您甚至不能强制 Test.INSTANCE 为 null。

<小时/>

但请考虑以下(反)示例,说明如何将静态引用重置为 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
}
}

关于java - null 引用的 Singleton 类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36236520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com