Java シングルトンのサンプル

Javaのシングルトンのサンプルです。

目次

シングルトン

  • あるクラスのインスタンスを1つしか作成しないデザインパターンのことです。
  • コンストラクタのアクセス修飾子をprivateにして外部からnewできないようにします。
  • クラスがロードされた初回に一度だけインスタンスが生成されます。
  • 生成したインスタンスは、アクセス修飾子がprivateのstatic変数に保存します。
  • インスタンスの取得はstaticメソッドから行います。
  • Java staticメソッドとstatic変数のサンプル
  • Java クラスのサンプル

 

コード

シングルトンのサンプルです。
18行目は、10行目のメソッドを呼び出します。その時に5行目に初期値としてインスタンス(アドレス)がセットされ、11行目でそのインスタンス(アドレス)が返ります。
19行目は、18行目のメソッド実行時に生成されたインスタンス(アドレス)が返ります。
21行目は、同じインスタンス(アドレス)の比較をするのでtrueになります。
26行目のインスタンスの生成は、7行目のコンストラクタがprivateのためコンパイルエラーになります。

package test1;
 
class Class1 {

    private static Class1 c1 = new Class1();

    private Class1() {
    }

    public static Class1 getInstance() {
        return c1;
    }
}

public class Test1 {
    public static void main(String[] args) {

    Class1 c1 = Class1.getInstance();
    Class1 c2 = Class1.getInstance();
    
    if (c1 == c2) {
        System.out.println("同じ"); //同じ
        }
    }
    // コンパイルエラー "コンストラクタClass1()は不可視です"
    //Class1 c3 = new Class1();
}

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java クラスの変数のサンプル(メンバー変数/ローカル変数)
Java 変数の型変換とキャストのサンプル
Java インスタンスの型を調べるサンプル(instanceof)
Java クラスのthisのサンプル
Java インターフェースのサンプル
Java abstract修飾子のサンプル
Java ポリモフィズムのサンプル
Java staticメソッドとstatic変数のサンプル

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る