Kotlin简单实现单例

Kotlin中的伴生对象:

companion object Obj {  
        var flag = false

        fun plus(num1: Int, num2: Int): Int {
            return num1 + num2
        }
    }

伴生对象相当于java当中的静态代码块,在Kotlin中不支持静态static,所以为了解决这个问题,Kotlin出现了companion object。

简单单例的代码:

package com.example.mykotlintest

/**
 *@author: create by OlderJiao
 *@date: 2019 2019/9/28 19:20
 */
class SingleTask1 {
    //伴生对象  相当于java中的静态 可以直接类名打点调用
    companion object{
        private var instances : SingleTask1? = null
        get() {
            //field 在get中是指instances
            if(field == null){
                field = SingleTask1()
            }
            return field
        }
        fun get() : SingleTask1{
            return instances!!//返回对象
        }
    }
}
  1. field 关键字 这个问题对 Java 开发者来说十分难以理解,网上有很多人讨论这个问题,但大多数都是互相抄,说不出个所以然来,要说还是老外对这个问题的理解比较透彻,可以参考这个帖子:https://stackoverflow.com/questions/43220140/whats-kotlin-backing-field-for/43220314

测试代码:

 /**
     * 测试方法
     */
    @Test
    fun TestSingle(){
        val task1 = SingleTask1.get()
        val  task2 = SingleTask1.get()
        println(task1 == task2)
    }

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44946212/article/details/101632977