首页 > 解决方案 > 伴生对象在 Kotlin 中被过度使用?

问题描述

这里我有java代码

  private static void content() {}

我转换为 Kotlin 它显示它变成了

companion object {

    private fun content() {}
}

我想知道我应该将它保留在伴随对象中还是应该删除伴随对象?

标签: androidkotlin

解决方案


伴生对象是一个单例,它的成员可以通过包含类的名称直接访问(尽管如果您想明确访问伴生对象,也可以插入伴生对象的名称)

伴随对象在加载类时(通常是第一次被正在执行的其他代码引用)以线程安全的方式初始化。您可以省略名称,在这种情况下,名称默认为 Companion。一个类只能有一个伴生对象,伴生对象不能嵌套。

class Car(val horsepowers: Int) {
companion object Factory {
    val cars = mutableListOf<Car>()

    fun makeCar(horsepowers: Int): Car {
        val car = Car(horsepowers)
        cars.add(car)
        return car
    }
}

}

val car = Car.makeCar(150)
println(Car.Factory.cars.size)

伴随对象相对于静态成员的优点是它们可以从其他类继承或实现接口,并且通常表现得像任何其他单例。


推荐阅读