Title Image

Modified : 2023/10/08

Singletonクラスの作り方と使い方

KotlinでSingleton(シングルトン)クラスの作り方と使い方を紹介します。
[Kotlin]に戻る

[記事の先頭]

概要

 KotlinでSingletonクラスを作る方法はいろいろあるようですが、 通常使うには問題なさそうな方法を紹介します。

[記事の先頭]

Singleton(シングルトン)クラスとは

 プログラム中で1つだけのインスタンスを持つクラスのことです。
 例えば、プログラムで使用する設定情報などを格納しておき、 どこからでも設定や参照するために使ったりします。

 なお、以下の場合、上手く動作しないため、Singletonクラスを使わない方がいいみたいです。
 詳しくは調べていないので、詳しく知りたい方は調べてみてください。
 無責任で申し訳ない。。。

[記事の先頭]

Singleton(シングルトン)クラスの作成例

class AtClassSingleton {
    companion object {
        // タグ名
        private val TAG = AtClassSingleton::class.java.simpleName

        // クラスのインスタンス
        private var instance: AtClassSingleton? = AtClassSingleton()

        // 未定値
        const val NONE = -1

        // クラスのインスタンスを取得する。
        fun getInstance(): AtClassSingleton {
            if (instance == null) {
                // instanceは初期化済みのため、基本的にここは実行されないはず。
                // ログを出力し、再度インスタンスの生成を試みる。
                println("${TAG} : instance is null.")
                instance = AtClassSingleton()
            }

            return instance!!
        }
    }

    // 最終値
    var lastValue: Int = NONE

    // コンストラクタ(外部からの呼び出し不可)
    private constructor(): super() {
    }
}

Singleton(シングルトン)クラスの使用例

fun setValue1() {
    val atSingleton = AtClassSingleton.getInstance()
    atSingleton.lastValue = 111
}

fun setValue2() {
    val atSingleton = AtClassSingleton.getInstance()
    atSingleton.lastValue = 222
}

val atSingleton = AtClassSingleton.getInstance()
println("インスタンス取得後 : ${atSingleton.lastValue}")
// => -1

setValue1()
println("setValue1()実行後 : ${atSingleton.lastValue}")
// => 111

setValue2()
println("setValue2()実行後 : ${atSingleton.lastValue}")
// => 222
[記事の先頭]

関連記事

[記事の先頭]
[Kotlin]に戻る