kotlin 中 object,companion object,class,data class 的区别

文章目录

    object

    a static instance of a class that there is only one of, otherwise known as a singleton

    • 类似单例 singleton
    • 整个 app 只有唯一一个实例
    • 不需要创建 instance 实例,就能访问里面的属性、方法
    • 第一次访问的时候,进行初始化,即 initialised lazily

    例如:

    object Tool {
        fun checksum {
            // ...
        }
    }
    
    Tool.checksum()  
    

    companion object

    companion:同伴、伴侣的意思。

    • 定义在 class 中的 object
    • 类似 java class 中的静态属性及方法

    例如:

    class ExampleClass {
      companion object {
        // Things that would be static in Java would go here in Kotlin
        private const val str = "asdf"
        fun myStaticMethod() {
            // ...
        }
      }
    
      fun example() {
        // I can access private variables in my companion object
        println(str)
      }
    }
    
    // 调用
    ExampleClass.myStaticMethod()
    

    class

    • 类似 java 中的 class
    • 可以实例化多个
    • 访问其中的属性,或方法,必须实例化

    data class

    • 省去了 Java 中啰嗦的 get set 写法
    • 自动实现了 equals(), hashCode() 和 toString()

    例如:

    data class PlaceholderItem(val id: String, val content: String, val details: String) {
        override fun toString(): String = content
    }
    

    参考

    • https://stackoverflow.com/questions/44255946/difference-between-a-class-and-object-in-kotlin

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式