el语言中使用的静态类的范围是什么?
我假设应用范围?
我在调试模式下对其进行了测试,并且该延迟加载属性仅在多个窗口、浏览器中初始化一次。
private static Object[] objects = null;
public static Object[] getObjects()
{
if(ElClass.objects == null)
//init objects
return ElClass.objects;
}
没有具体实例的方法。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.
}