无参的单例
kotlin创建单例类很简单 如下
object Dl {
}
单例不能实现构造方法
修改如下
object Dl {
private var x = 1
init {
println("单例 初始化代码块执行 $x 次 x+1 = ${(x+1)}")
}
}
创建非单例类
class Fdl {
private val x = 1
init {
println("非单例 初始化代码块执行 $x 次 x+1 = ${(x+1)}")
}
}
创建对象
fun main(args: Array<String>) {
println(DTUtils.getNowDT())
val a = Fdl()
val b = Fdl()
val c = Dl
val d = Dl
}
输出如下
2020/01/15 17:31:29
非单例 初始化代码块执行 1 次 x+1 = 2
非单例 初始化代码块执行 1 次 x+1 = 2
单例 初始化代码块执行 1 次 x+1 = 2
可见单例类初始化代码块只执行一次,故如果有需要在构造方法中初始化的操作可放到初始化代码块里
有参的单例
对于Android的一些方法来说, 可能需要context对象作为参数 (比如自己封装的Sharepreference工具类