gpt4 book ai didi

java - 为什么类中的静态变量有时为空?

转载 作者:行者123 更新时间:2023-12-01 14:20:28 25 4
gpt4 key购买 nike

我已经定义了这段代码。

public class AAA {
public static final Map<String, String> gList = new HashMap<> {{
put("xxx", "xxx");
put ....
}};
public static AAA instance;
public static AAA getInstance() {
if (instance == null)
instance = new AAA();
return instance;
}

public String calledFunc(String k) {
return gList.get(k);
}
}

public class BBB {
...
public void callingFunc(String k) {
AAA.getInstance().calledFunc(k); // <= NULL pointer some time
}
}

这是因为内存分配失败还是会在某个地方被释放。只是不要了解我的代码有什么问题。也许这不是可靠的初始化方式。

最佳答案

我不久前尝试做类似的事情来保存类之间的数据,我最终选择了 Enum

也许尝试一下这样的事情?

public enum AAA {
INSTANCE;
public static final Map<String, String> gList = new HashMap<> {{
put("xxx", "xxx");
put ....
}};
public String calledFunc(String k) {
return gList.get(k);
}
}

如果你这样做,你就不需要枚举中的函数,因为你可以这样做

public class BBB {
...
public void callingFunc(String k) {
AAA.gList.get(k); // <= NULL pointer some time
}
}

关于java - 为什么类中的静态变量有时为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626063/

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