Kotlin 伴随对象
提示
- 伴随对象的作用:在 Kotlin 中,通过使用
companion
关键字创建的伴随对象允许你使用类名直接调用成员方法,类似于 Java 中的静态方法。 - 访问成员方法:可以通过类名直接调用伴随对象中的方法,而无需创建类的实例,例如
Person.callMe()
。 - 伴随对象名称可选:伴随对象的名称是可选的,可以省略。伴随对象还可以访问类 的私有成员,并用于实现工厂方法模式。
在讨论伴生对象之前,让我们先看一个访问类成员的例子。
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,你可能会将伴生对象与静态方法联系起来(尽管它们内部的工作方式完全不同)。
伴生对象可以访问类的私有成员。因此,它们可以用于实现 工厂方法模式。