0

el言語で使用される静的クラスの範囲は?

私は適用範囲を想定していますか?

デバッグ モードでテストしたところ、その遅延読み込み属性は、複数のウィンドウやブラウザーで 1 回だけ初期化されます。

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 に答える