1. ホーム
  2. java

[解決済み] 静的enumと非静的enumの比較 [重複] (英語)

2023-05-07 09:39:09

質問

Javaにおけるstatic enumとnon-static enumの違いは何ですか?どちらも使い方は同じです。

というのは正しいのでしょうか? は、静的なものはすべて起動時にメモリ上にロードされ、非静的なものはオンデマンドでロードされます。 ? もしそうなら、どちらの方法が良いのでしょうか?一部のデータを常にメモリに保持するのか、それともサーバーのリソースを使って毎回読み込むのか?

public class Test {

    public enum Enum1 {
        A, B
    }

    public static enum Enum2 {
        C, D
    }

    public static void main(String[] args) {
        Enum1 a = Enum1.A;
        Enum1 b = Enum1.B;

        Enum2 c = Enum2.C;
        Enum2 d = Enum2.D;
    }
}

どのように解決するのですか?

すべて enum は、事実上 static . ネストされたenumがある場合、それはほとんど static class .

すべてのクラスは遅延ロードされますが(列挙型であろうとなかろうと)、ロードされるときには一度にすべてロードされます。

Javaでは、常に宣言する必要がないように、特定の修飾子を暗黙的に使用することができます。 これは、修飾子を追加することは、同じことを書くより長い方法を提供すること以外、必ずしも何かをするわけではないことを意味します。

のデフォルトの修飾子は

クラスフィールド/メソッド/ネストされたクラス - パッケージローカル、非終端、非静的

enumおよびネストされたenum - ローカル、ファイナル、スタティックパッケージ

インターフェースフィールド public static final

インターフェース・メソッド - public abstract

インターフェース内のネストしたクラス public static 最終的なものではありません。

注意:一方 static はオプションです。 enum は常に静的です。 しかし final は、たとえそれが常に概念的に final (に設定することはできません(技術的には、定数に対してオーバーライドされた実装を持つサブクラスを持つことができます)。

編集: 唯一必要な場所は static と共に enumimport static で、enum の値です。ありがとうございます。