4

ちょっとした質問をしただけで、これに対する正しい答えを見つけることができるかどうかわかりません。

Java で ENUM を使用し、独自のコンストラクター (および多くの、多くの、maaaaany パラメーター) を使用する場合、それらはプログラムが実行されるたびにメモリに格納されますか、または使用された場合にのみメモリに「ロード」されますか?

つまり、400 エントリの ENUM があり、エントリの 1 つだけを使用すると、他のすべてのエントリがまだメモリに存在するのでしょうか?

いくつかの擬似コード:

public enum Type {
    ENTRY_A(val1, val2, val3, val4, new Object(val5, val6, val7, ...)),
    ENTRY_B(val1, val2, val3, val4, new Object(val5, val6, val7, ...)),
    ENTRY_C(val1, val2, val3, val4, new Object(val5, val6, val7, ...)),
    ...
}

ENTRY_A のみを使用し、ENTRY_B、ENTRY_C などには触れない場合、Java はそれを正確にどのように処理しますか?

回答ありがとうございます - はい、これは主に好奇心です

4

3 に答える 3

4

はい、ENUM定数を1つしか使用していなくても、すべてがメモリにロードされます。

Enum は特別なタイプのクラスであり、すべてのフィールドは定数であるため、ENUM をロードすると、それ自体がすべてをメモリにロードします。

于 2012-10-24T14:24:35.100 に答える
4

列挙型を初めて使用すると、クラスの初期化がトリガーされ、すべての値が作成され、他のクラスと同じようにメモリに格納されます。

于 2012-10-24T14:25:09.233 に答える
1

いつでも自分で試すことができます。たとえばSystem.println("test")、のコンストラクタに入れてenum、経験的に結果を受け入れます。

于 2012-10-24T14:31:24.477 に答える