jsf表达式语言(el)类函数的生命范围

时间:2012-04-27 00:18:54

标签: java jsf scope el

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

我假设申请范围?

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

private static Object[] objects = null;

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

1 个答案:

答案 0 :(得分: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.
}