在 Kotlin 中,你可以使用伴生对象的 object
关键字来创建一个单例。由于伴生对象在类加载时就被初始化,所以它们是线程安全的,并且只能有一个实例。下面是一个简单的示例:
class Singleton {
companion object {
// 使用懒加载的方式初始化单例
val instance: Singleton by lazy {
Singleton()
}
}
}
fun main() {
val singleton1 = Singleton.instance
val singleton2 = Singleton.instance
// 由于单例的懒加载特性,这里的输出顺序可能会有所不同,但结果都是相同的
println("singleton1: $singleton1")
println("singleton2: $singleton2")
}
在这个示例中,我们创建了一个名为 Singleton
的类,并在其中定义了一个伴生对象。伴生对象中有一个名为 instance
的属性,它使用 lazy
关键字进行懒加载。这意味着 instance
属性将在第一次访问时才被初始化,从而确保单例的线程安全。
在 main
函数中,我们分别访问了两次 Singleton.instance
,由于单例的懒加载特性,这里的输出顺序可能会有所不同,但结果都是相同的。这表明我们成功地实现了一个单例模式。