gpt4 book ai didi

java - 一类静态方法中的构造函数

转载 作者:搜寻专家 更新时间:2023-11-01 01:06:52 24 4
gpt4 key购买 nike

我有一个静态方法类,可以在类中保存的 map 上执行,我希望在调用类时设置 map 。我试过使用私有(private)构造函数,但没有调用它。我的代码的相关部分是:

public class MyClass
{
private static final String KEYS = "ABC";
private static final String[] DATA = {"AAA", "BBB", "CCC"};
private static HashMap<Character, String> myMap;

private MyClass() {
System.out.println("Running constructor");
populateMyMap();
}

private static void populateMyMap() {
myMap = new HashMap<Character, String>();
for (int i=0; i < KEYS.length; i++) {
myMap.put(KEYS.charAt(i), DATA[i]);
}
}

//various static methods
}

在这里使用私有(private)构造函数是否正确,如果是这样,我做错了什么?

抱歉,如果这是重复的;我试过搜索答案,但我不确定要搜索什么!

最佳答案

不,私有(private)构造函数不是您想要的。构造函数初始化您的类的一个实例(当您调用 new MyClass() 时),但静态不属于实例,因此不应从构造函数。您希望在首次加载类时进行的初始化应该位于类级别的 static block 中。

static {
populateMyMap();
}

但是您永远不应该使用静态(全局)状态。静态状态使您的系统难以测试,它比实例状态更微妙(例如,类的每次加载都有一个副本)并且通常更难确保线程安全。

考虑让您的 map 成为类的实例成员

关于java - 一类静态方法中的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8839625/

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