下面是 Web 应用程序中使用的静态方法的示例。正如您所看到的,每次调用此方法时,String[] allergensArr 都会被实例化。它是线程安全的,因为它是静态方法,但这是一个昂贵的调用。
还有哪些其他方法可以使用 allergensArr[] 以便每次调用该方法时都不会实例化它。
我正在考虑以下选项。
- 有一个初始化静态最终 String[] 的静态构造函数
- 使用单例(尽管这会阻止很多人)
这将是一个常量数组,在实例化服务器的生命周期中不会更改。
public class UserHealthConcernsManager { public static String[] getAllergensFlag () { String[] allergensArr = new String[12]; allergensArr[0] = "x"; allergensArr[1] = "y"; allergensArr[2] = "w"; _SNIP_ return allergensArr; } }
最佳答案
您是否考虑过使用列表
来代替引用数组?
代码可以简化为:
public static final List<String> allergensFlag =
Collections.unmodifiableList(Arrays.asList(
"x",
"y",
"w",
...
));
如果您真的非常想要老式数组,那么克隆的成本很小。
private static final String[] allergensFlag = {
"x",
"y",
"w",
...
};
public static String[] getAllergensFlag () {
return allergensFlag.clone();
}
关于java - 静态访问 HashMap/Array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1608816/