kotlin用object实现单例模式,companion object与java静态
kotlin中很容易使用object实现java中的单例模式。由于kotlin中没有static修饰词,可以用companion object实现Java中的static效果。
//object相当于java的单例
object Singleton {
var count: Int = 0
fun out(msg: String? = "zhang") {
println("$msg -- $count")
count++
}
}
class MyClass {
//相当于java的static final
companion object {
fun mymethod() {
println("方法 - ${object {}.javaClass.enclosingMethod.name}")
}
}
}
fun main(args: Array<String>) {
Singleton.out()
Singleton.out()
Singleton.out()
MyClass.mymethod()
}
输出:
zhang -- 0
zhang -- 1
zhang -- 2
方法 - mymethod
可以看到object定义的Singleton只初始化一次。