📜  kotlin 中的伴生对象(1)

📅  最后修改于: 2023-12-03 15:32:30.422000             🧑  作者: Mango

Kotlin 中的伴生对象

在 Kotlin 中,每个类都可以有一个附加的“伴生对象(Companion Object)”。这个伴生对象通过“Companion”关键字来定义,它可以访问其所属类中的所有私有成员,甚至可以定义静态方法,而不用创建该类的实例。

定义伴生对象

我们可以通过以下方式定义一个伴生对象:

class MyClass {
    companion object {
        //...
    }
}

注意,伴生对象的名称并不是 Companion,而是可以自定义的。如果不指定名称,将使用默认名称 Companion。另外,每个类最多只能有一个伴生对象。

访问伴生对象

我们可以通过类名直接访问伴生对象:

MyClass.Companion // 访问伴生对象

或者可以省略 Companion,直接使用类名访问:

MyClass // 访问伴生对象

与 Java 不同,Kotlin 的伴生对象是非常重要的一部分。它们可以用来:

  • 实现工厂模式
  • 访问或修改类的私有成员
实现工厂模式

伴生对象可以让类中的工厂方法更加容易识别。以下是一个例子:

interface Animal { }

class Dog : Animal {
    companion object Factory {
        fun create(): Dog = Dog()
    }
}

Dog.create() // 使用工厂方法创建 Dog 对象
访问私有成员

伴生对象可以访问其所属类的私有成员,我们可以将其视为一个拥有所有私有成员访问权限的对象。以下是一个例子:

class MyClass {
    private val myPrivateVar = 1

    companion object {
        fun accessPrivateVar(obj: MyClass) = obj.myPrivateVar
    }
}

val obj = MyClass()
MyClass.accessPrivateVar(obj) // 访问 MyClass 中的私有变量

以上就是 Kotlin 中的伴生对象的介绍。其实它们非常类似于 Java 中的静态方法。但它们在 Kotlin 中的功能更加强大,可以访问类的私有成员,是 Kotlin 中比较重要的一部分。