1. ホーム

[解決済み】EnumでSingletonを実装する(Javaの場合)

2022-04-18 20:19:38

質問

を実装することが可能であることを読みました。 Singleton を使用して、Javaで Enum のようなものです。

public enum MySingleton {
     INSTANCE;   
}

しかし、上記はどのように機能するのでしょうか?具体的には Object をインスタンス化する必要があります。ここで、どのように MySingleton はインスタンス化されているのでしょうか?誰が new MySingleton() ?

解決方法は?

これです。

public enum MySingleton {
  INSTANCE;   
}

は暗黙のうちに空のコンストラクタを持っています。代わりに明示的にしてください。

public enum MySingleton {
    INSTANCE;
    private MySingleton() {
        System.out.println("Here");
    }
}

その後、別のクラスを main() のようなメソッドを使用します。

public static void main(String[] args) {
    System.out.println(MySingleton.INSTANCE);
}

と表示されます。

Here
INSTANCE

enum フィールドはコンパイル時の定数ですが、そのインスタンスである enum という型があります。そして、これらは、enum型が 初めて .