饿汉式
object SimpleSington {
fun test() {}
}
//在Kotlin里调用
SimpleSington.test()
//在Java中调用
SimpleSington.INSTANCE.test();
这个版本的实现,其实是个语法糖(Kotlin漫山遍野都是语法糖)。其真正的实现类似于这样
public final class SimpleSington {
public static final SimpleSington INSTANCE;
private SimpleSington() {
INSTANCE = (SimpleSington)this;
}
static {
new SimpleSington();
}
}
懒汉式加载
class LazySingleton private constructor(){
companion object {
val instance: LazySingleton by lazy { LazySingleton() }
}
}
lazy默认情况下是线程安全的 。