访问伴侣对象外的方法 - Kotlin

时间:2017-04-03 07:59:22

标签: kotlin companion-object

我对kotlin很陌生,我想知道是否可能,以及在配对对象中访问伴随对象之外的方法和变量是否违反最佳做法。

例如

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

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

或类似的东西

谢谢

2 个答案:

答案 0 :(得分:18)

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

class A {
    fun doStuff() = true

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

答案 1 :(得分:1)

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

class A {
    fun doStuff() = true

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