0

el语言中使用的静态类的范围是什么?

我假设应用范围?

我在调试模式下对其进行了测试,并且该延迟加载属性仅在多个窗口、浏览器中初始化一次。

private static Object[] objects = null;

public static Object[] getObjects()
{
    if(ElClass.objects == null)
        //init objects
    return ElClass.objects;
}
4

1 回答 1

1

没有具体实例的方法。EL 函数类甚至没有被构造。EL 函数旨在完全无状态。静态变量是每个定义的 JVM 范围的(或者你称之为应用程序范围的)。在普通的 Java 代码中,您也可以这样做,ELClass.getObjects()而不是new ELClass().getObjects().

至于您的特定示例,我建议仅在静态初始化程序块中进行初始化。延迟加载是不必要的。

private static final Object[] objects;

static {
    // Init objects.
}

public static Object[] getObjects() {
    return objects;
}

我还建议添加一个私有构造函数,以防止函数类被构造。

private ELClass() {
    // Prevent construction.
}
于 2012-04-27T00:25:20.680 回答