0
  • 最佳答案
    var instance: RetrofitManager? = null
            get() {
                if (field == null) {
                    field = RetrofitManager()
                }
                return field
            }
    



    这个get是instance,这个get是自定义的,那么每次访问该属性时都会调用这个方法。


     fun get(): RetrofitManager {
            return instance!!
        }
    


    这个是对外的。


    估计是这个作者抄别人代码,没有抄全吧。


    如果按你上面的代码,getInstance就可以获取到了。这个instance没有私有,也可以被外部setInstance。由此看来的确是没啥意义,直接就可以获取到了。


    而 fun get(): RetrofitManager 最好加个锁或者做成同步代码块,如果多个线程同时进来获取的时候,刚地为null的,就创建两个对象了。


    @Synchronized 
    fun get(): RetrofitManager {
            return instance!!
    }
    






    1153952789488054272  评论     打赏       拉大锯
    • Cstri  回复 @拉大锯
      嗯嗯,了解,谢啦
      Cstri 2022-05-10 10:56   回复 1342082010843308032
    • A lonely cat  回复 @拉大锯
      至少应该 private set 的
      A lonely cat 2022-05-10 22:30   回复 1204736502274318336
  • 按道理来说 他应该这样写的:


    companion object {
    
        // 单例可防止同时打开多个数据库实例(双重校验锁式(Double Check)单例)。
        @Volatile
        private var sINSTANCE: RetrofitManager? = null
    
        @JvmStatic
        fun getInstance(): RetrofitManager {
            //如果 INSTANCE 不为空,则返回它,如果是,则创建
            return sINSTANCE ?: synchronized(this) {
                val instance = RetrofitManager()
                sINSTANCE = instance
                // 返回实例
                instance
            }
        }
    }
    


    以上代码是我从官方示例里找的。如有用,请点赞、打赏。


    1204736502274318336  评论     打赏       A lonely cat
    • Cstri  回复 @A lonely cat
      有个疑惑,在实际的工作中都需要加上锁吗?就像我上面的代码,我只是想得到一个Fragment实例,是否需要加锁呢?
      Cstri 2022-05-11 13:53   回复 1342082010843308032
  • 这是准备写的一个单例吗?
    1284274686481473536  评论     打赏       YanLQ
    • Cstri  回复 @YanLQ
      那段代码是别人的项目,只是有些奇怪,为什么要这样写,不过上面解答了,也理解了
      Cstri 2022-05-11 13:55   回复 1342082010843308032
  • 你可以参考一下这个文档:

    https://www.kotlincn.net/docs/reference/properties.html

    1153952789488054272  评论     打赏       拉大锯
    相关问题
    _empty · Android
    2019-10-20 23:51 628 2
    application · Android
    2019-11-05 00:26 779 2
    三流废物 · android / 小白
    2019-11-22 00:35 1067 5
    豪豪好嘛 · Android / GPS
    2019-11-26 20:15 884 5
    Jian · android
    2019-11-28 01:51 615 2
    2019-12-01 01:01 705 2
    小陈学编程 · Android
    2019-12-01 19:08 633 2
    fkinggod · Android
    2019-12-08 09:19 661 5
    fkinggod · Android
    2019-12-08 20:47 610 2
    kissmyass · Android
    2019-12-09 07:08 537 2
    独一无二的名zi · Android
    2019-12-30 06:48 415 2