列挙型を使用したシングルトンの実装: メカニズムの解明
Java で列挙型を使用してシングルトン設計パターンを実装するという概念は、インスタンス化に関する疑問を引き起こします。内部の仕組みを詳しく調べるために、提供されているコード スニペットを調べてみましょう。
public enum MySingleton { INSTANCE; }
最初に、上記の enum 宣言が暗黙的な空のコンストラクターを作成することに注意することが不可欠です。ただし、わかりやすくするために、明示的に説明します:
public enum MySingleton { INSTANCE; private MySingleton() { System.out.println("Here"); } }
次に、動作を観察する main() メソッドを含むテスト クラスを作成しましょう:
public static void main(String[] args) { System.out.println(MySingleton.INSTANCE); }
これを実行するとコードを実行すると、次の出力が表示されます:
Here INSTANCE
ここで、MySingleton はどうなっているのかという疑問が生じます。インスタンス化された?答えは列挙型フィールドの性質にあります。これらはコンパイル時の定数として機能しますが、同時に対応する列挙型のインスタンスでもあります。これらの構築は、列挙型が初めて参照されるときに行われます。この場合、これは main() メソッド内で行われます。
したがって、列挙フィールドは本質的にその列挙型のインスタンスであることを理解することが重要です。 new.
を使用した明示的なインスタンス化を必要とせずにシングルトン パターンを強制する便利なメカニズムを提供します。以上がJava Enum はシングルトン パターンをどのように実装するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。