为什么不能在其他成员可以“静态”访问Kotlin伴侣对象内的对象?

时间:2017-10-04 09:21:26

标签: kotlin

给出一个Kotlin伴侣对象

class A {
    companion object {
        val a = 0
        fun b() = 1
        object C {
            val d = 0
        }
    }
}

fun main(args: Array<String>) {
    println(A.a)
    println(A.b())
    println(A.C.d) // doesn't compile
    println(A.Companion.C.d)
}

为什么CompanionA.Ca不适用时需要访问b()

1 个答案:

答案 0 :(得分:2)

这有助于消除伴侣对象中声明的对象与直接在该类中声明的对象的歧义。

请注意,类中定义的属性和函数与伴随对象中的属性和函数不一致,因为前者只能在类的实例上调用。但是可以使用类名称引用嵌套对象:

class A {
    object C {
        val d = 0
    }
}

println(A.C.d)