3. Kotlin单例实现方式

饿汉式

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默认情况下是线程安全的 。

你可能感兴趣的:(3. Kotlin单例实现方式)