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

更新日期: 2022-10-28 阅读次数: 198 字数: 268 分类: Kotlin

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

爱评论不评论