定义

在 Kotlin 中,object 关键字可以用来声明对象。对象可以分为两种:

  • 对象表达式:一种表达式,可以直接赋值给变量或常量。
  • 对象声明:一种类似于 Java 中的静态类的声明。

用途

对象可以用于以下场景:

  • 表示单例:使用 object 关键字声明的对象只有一个实例,类似于 Java 中的单例模式。
  • 表示静态方法:使用 object 关键字声明的对象可以包含静态方法,类似于 Java 中的静态方法。
  • 表示枚举:使用 object 关键字声明的对象可以表示枚举,类似于 Java 中的枚举。

和普通类的区别

对象和普通类的区别主要体现在以下几点:

  • 实例数量:对象只有一个实例,而普通类可以有多个实例。
  • 构造函数:对象可以没有构造函数,而普通类必须至少有一个构造函数。
  • 初始化:对象的初始化是在第一次使用时进行的,而普通类的初始化是在创建实例时进行的。
  • 继承:对象可以继承其他对象,而普通类可以继承其他类。

使用示例代码

对象表达式

fun main(args: Array<String>) {
    val adHoc = object {
        var x: Int = 0
        var y: Int = 0
    }
    println(adHoc.x + adHoc.y) // 0
}

对象声明

object AppConfig {
    val version = "1.0.0"
}

fun main(args: Array<String>) {
    println(AppConfig.version) // 1.0.0
}

单例

object App {
    fun doSomething() {
        // ...
    }
}

fun main(args: Array<String>) {
    App.doSomething() // ...
}

静态方法

object Util {
    fun doSomething() {
        // ...
    }
}

fun main(args: Array<String>) {
    Util.doSomething() // ...
}

枚举

在 Kotlin 中,使用 object 关键字定义枚举,只需要在 object 关键字后面添加 enum class 关键字即可。

enum class Color {
    RED, GREEN, BLUE
}

fun main(args: Array<String>) {
    val color = Color.RED
    println(color) // RED
}
12-21 00:13