这是在Web应用程序中使用的静态方法的示例。如您所见,每次调用此方法时,String [] allergensArr都会被插入。它是线程安全的,因为它在静态方法中,但这是一个昂贵的调用。
还有什么其他方式可以使用allergensArr [],以便在每次调用该方法时都不会实例化它。
我正在考虑以下选项。
有一个静态构造函数初始化一个静态的最终String []
使用单身人士(尽管这会阻止很多人)
这将是一个不变的数组,在实例化服务器的生存期内不会改变。
公共类UserHealthConcernsManager {
公共静态String [] getAllergensFlag(){
String [] allergensArr =新的String [12];
allergensArr [0] =“ x”;
allergensArr [1] =“ y”;
allergensArr [2] =“ w”;
_SNIP_
返回allergensArr;
}
}
最佳答案
您是否考虑过使用List
而不是引用数组?
该代码可以简化为:
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();
}