在Kotlin中,没有静态变量和静态方法,但是可以通过Kotlin中的 伴生对象 来实现。
第一种懒汉式写法:
class Singleton private constructor(){
// 单例,私有的主构造函数,无从构造函数
var code: Int = 0
var msg: String = ""
var data: String = ""
// 声明类的伴生对象
companion object {
private var singleInstance: Singleton? = null
get() {
// 懒汉模式
if(null == field) {
field = Singleton()
}
return field
}
@Synchronized // 添加注解,线程同步,线程安全
fun getInstance(): Singleton {
return singleInstance!! // 表示非空时执行
}
}
fun print() {
println("Result: $code, $msg, $data")
}
}
第二种:饿汉式
class Singleton private constructor(){
// 单例,私有的主构造函数,无从构造函数
var code: Int = 0
var msg: String = ""
var data: String = ""
companion object {
public var instance: Singleton = Singleton()
@Synchronized // 注解,get线程同步
get
}
fun print() {
println("Result: $code, $msg, $data")
}
}