这是在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();
}

08-04 03:11