静态单例
object
本身不能接受构造参数,因为它是一个静态单例
object Singleton {
fun hello() = println("我是单例模式")
}
在 Kotlin 中,
object
的底层实现实际上是通过静态字段和静态初始化块来实现的。编译后的字节码会生成一个静态的单例实例
等价的Java代码
public final class Singleton {
public static final Singleton INSTANCE;
private Singleton() {
System.out.println("Singleton initialized");
}
public void hello() {
System.out.println("我是单例模式");
}
static {
INSTANCE = new Singleton();
}
}
使用
这种写法虽然看上去像是静态方法的调用,但其实Kotlin在背后自动帮我们创建了一个Singleton类的实例,并且保证全局只会存在一个Singleton实例。
fun main() {
Singleton.hello()
}
扩展
扩展 |
---|
伴生对象 |