kotlin 两种单实例写法

在Kotlin中,没有静态变量和静态方法,但是可以通过Kotlin中的 伴生对象 来实现。

第一种懒汉式写法:

复制代码
class Singleton private constructor(){
    // 单例,私有的主构造函数,无从构造函数

    var code: Int = 0
    var msg: String = ""
    var data: String = ""
    // 声明类的伴生对象
    companion object {
        private var singleInstance: Singleton? = null
        get() {
            // 懒汉模式
            if(null == field) {
                field = Singleton()
            }
            return field
        }

        @Synchronized // 添加注解,线程同步,线程安全
        fun getInstance(): Singleton {
            return singleInstance!! // 表示非空时执行
        }
    }

    fun print() {
        println("Result: $code, $msg, $data")
    }
}

第二种:饿汉式

复制代码
class Singleton private constructor(){
    // 单例,私有的主构造函数,无从构造函数

    var code: Int = 0
    var msg: String = ""
    var data: String = ""

    companion object {
        public var instance: Singleton = Singleton()
        @Synchronized // 注解,get线程同步
        get
    }

    fun print() {
        println("Result: $code, $msg, $data")
    }

}
相关推荐
jason.zeng@150220710 小时前
Androidr入门环境搭建
java·kotlin
重生之我是Java开发战士11 小时前
【MySQL】事务 & 用户与权限管理
android·数据库·mysql
怣疯knight13 小时前
Windows不安装 Android Studio如何打包安卓软件
android·windows·android studio
ke_csdn13 小时前
从Java演变到Kotlin下的jet pack
android
wenzhangli713 小时前
在低代码设计中践行 Harness Engineering
android·低代码·rxjava
xingpanvip14 小时前
星盘接口开发文档:组合三限盘接口指南
android·开发语言·前端·python·php·lua
TechMix15 小时前
【fkw学习笔记】Android 13 AOSP 源码添加系统预置应用实战指南
android·笔记·学习
云起SAAS15 小时前
私域直播系统UniApp源码 多商户商城+直播带货 微信小程序+H5+安卓iOS
android·微信小程序·uni-app·私域直播系统
空中海15 小时前
01. 安卓逆向基础、环境搭建与授权
android
星河耀银海15 小时前
JAVA 泛型与通配符:从原理到实战应用
android·java·服务器