给出一个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)
}
为什么Companion
在A.C
和a
不适用时需要访问b()
?
答案 0 :(得分:2)
这有助于消除伴侣对象中声明的对象与直接在该类中声明的对象的歧义。
请注意,类中定义的属性和函数与伴随对象中的属性和函数不一致,因为前者只能在类的实例上调用。但是可以使用类名称引用嵌套对象:
class A {
object C {
val d = 0
}
}
println(A.C.d)