kotlin constructor init companion object 与初始化by lazy
class MyDemo(private var v: Int) {
init {
println("init $v")
}
constructor(m: Int, n: Int) : this(m) {
println("constructor $m $n")
}
//只初始化一次
companion object {
private var TAG = "fly"
init {
println("companion object $TAG")
}
val instance: MyDemo by lazy {
MyDemo(0)
}
}
fun foo() {
println("foo $v")
}
}
fun main(args: Array<String>) {
MyDemo(1)
MyDemo.instance.foo()
println("---")
MyDemo(2, 3)
MyDemo.instance.foo()
}
companion object fly
init 1
init 0
foo 0
---
init 2
constructor 2 3
foo 0