Singletonとは
Singletonとはクラスのインスタンスが1つしか生成されないことを保証するものです。
kotlinではオブジェクト宣言よって作成されたオブジェクトは、シングルトンオブジェクトとなります。
kotlinのSingleton(object)の使い方
kotlinではオブジェクトを宣言することでSingletonのオフジェクトになります。
object SingletonObject {
var text = "hello world"
}
fun main() {
println(SingletonObject.text)
}
実行結果
hello world
objectはインスタンス化はできません。
よって、オブジェクト宣言によって作成されたオブジェクトは、シングルトンオブジェクトとなります。
object SingletonObject
fun main() {
val singletonObject = SingletonObject() //インスタンス化できない。コンパイルエラーとなる
}
実行結果
Error:(8, 27) Kotlin: Expression 'SingletonObject' of type 'SingletonObject' cannot be invoked as a function. The function 'invoke()' is not found
継承
objectはスーパータイプを持つことができます。
interface MyInterface {
fun bar()
fun foo() {
println("fun foo")
}
}
object SingletonObject: MyInterface {
override fun bar() {
println("fun bar")
}
}
fun main() {
SingletonObject.bar()
SingletonObject.foo()
}
実行結果
fun bar
fun foo