跳到主要内容

Kotlin 伴随对象

提示
  1. 伴随对象的作用:在 Kotlin 中,通过使用 companion 关键字创建的伴随对象允许你使用类名直接调用成员方法,类似于 Java 中的静态方法。
  2. 访问成员方法:可以通过类名直接调用伴随对象中的方法,而无需创建类的实例,例如 Person.callMe()
  3. 伴随对象名称可选:伴随对象的名称是可选的,可以省略。伴随对象还可以访问类的私有成员,并用于实现工厂方法模式。

在讨论伴生对象之前,让我们先看一个访问类成员的例子。

class Person {
fun callMe() = println("我被调用了。")
}

fun main(args: Array<String>) {
val p1 = Person()

// 使用对象 p1 调用 callMe() 方法
p1.callMe()
}

这里,我们创建了 Person 类的对象 p1 来调用 callMe() 方法。这就是事情通常的运作方式。

然而,在 Kotlin 中,你也可以通过使用类名来调用 callMe() 方法,即在这个例子中是 Person。为此,你需要通过用 companion 关键字标记 对象声明 来创建一个伴生对象。

示例:伴生对象

class Person {
companion object Test {
fun callMe() = println("我被调用了。")
}
}

fun main(args: Array<String>) {
Person.callMe()
}

当你运行程序时,输出将是:

我被调用了。

在程序中,用 companion 关键字标记的 Test 对象声明创建了一个伴生对象。因此,可以使用类名调用 callMe() 方法,如下所示:

Person.callMe()

伴生对象的名称是可选的,可以省略。

class Person {

// 省略了伴生对象的名称
companion object {
fun callMe() = println("我被调用了。")
}
}

fun main(args: Array<String>) {
Person.callMe()
}

如果你熟悉 Java,你可能会将伴生对象与静态方法联系起来(尽管它们内部的工作方式完全不同)。

伴生对象可以访问类的私有成员。因此,它们可以用于实现 工厂方法模式