访问伴随对象外部的方法 - Kotlin

Access methods outside companion object - Kotlin

我是 kotlin 的新手,我想知道这是否可能,以及从伴随对象内部访问伴随对象外部的方法和变量是否违反最佳实践。

例如

class A {
    fun doStuff(): Boolean = return true

    companion object{
        public fun stuffDone(): Boolean = return doStuff()
    }
}

或类似的东西

谢谢

doStuff()是一个class的实例方法;调用它需要一个 class 实例。伴随对象的成员,就像 Java 中的静态方法一样,在范围内没有 class 实例。因此,要从伴生对象方法中调用实例方法,需要显式提供实例:

class A {
    fun doStuff() = true

    companion object {
        fun stuffDone(a: A) = a.doStuff() 
    }
}

您还可以调用伴随对象块之外的函数。

class A {
    fun doStuff() = true

    companion object {
        val a = A()
        fun stuffDone() = a.doStuff() 
    }
}