Singletonクラスの作り方と使い方
KotlinでSingleton(シングルトン)クラスの作り方と使い方を紹介します。
[Kotlin]に戻る
[記事の先頭]
概要
KotlinでSingletonクラスを作る方法はいろいろあるようですが、 通常使うには問題なさそうな方法を紹介します。
[記事の先頭]
Singleton(シングルトン)クラスとは
プログラム中で1つだけのインスタンスを持つクラスのことです。
例えば、プログラムで使用する設定情報などを格納しておき、
どこからでも設定や参照するために使ったりします。
なお、以下の場合、上手く動作しないため、Singletonクラスを使わない方がいいみたいです。
詳しくは調べていないので、詳しく知りたい方は調べてみてください。
無責任で申し訳ない。。。
- Windows、macOS、Linux上でフォームを使う場合
フォーム間で同じインスタンスを使えないため、Singletonクラスの意味がなくなる。
- Androidで使う場合
ガベージコレクションが走ってしまうため、同じインスタンスにならないことがある。
[記事の先頭]
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]に戻る
