当前位置: 首页>后端>正文

kotlin 实现带参数的单例

在Kotlin中,可以通过使用对象声明和伴生对象来实现带参数的单例。下面是一个示例:

class MySingleton private constructor(private val name: String) {
    companion object {
        private var instance: MySingleton= null

        fun getInstance(name: String): MySingleton {
            if (instance == null) {
                synchronized(this) {
                    if (instance == null) {
                        instance = MySingleton(name)
                    }
                }
            }
            return instance!!
        }
    }

    fun printName() {
        println("Singleton name: $name")
    }
}

在上面的示例中,MySingleton类的构造函数是私有的,这样就防止了直接创建实例。通过在伴生对象中定义getInstance()方法,可以获取该单例的实例。getInstance()方法接收一个参数name,用于初始化单例的属性。

getInstance()方法中使用双重检查锁定(Double-Checked Locking)来确保线程安全的单例实例化。这样可以避免在多线程环境下创建多个实例。

你可以通过以下方式使用带参数的单例:

val singleton = MySingleton.getInstance("MySingleton")
singleton.printName() // 输出:Singleton name: MySingleton

在上述代码中,我们通过getInstance()方法获取了带参数的单例实例,并调用printName()方法打印单例的名称。

需要注意的是,带参数的单例在第一次调用getInstance()时进行初始化,后续调用将返回已经创建的单例实例,不会再次创建新的实例。这样可以确保单例的唯一性,并且每次获取单例时都可以传递不同的参数进行初始化。


https://www.xamrdz.com/backend/3c41940522.html

相关文章: