给定一个 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()
?
最佳答案
这用于消除在伴随对象中声明的对象与在类中直接声明的对象的歧义。
请注意,类中定义的属性和函数与来自伴生对象的属性和函数没有歧义,因为前者只能在类的实例上调用。但是可以使用类名引用嵌套对象:
class A {
object C {
val d = 0
}
}
println(A.C.d)
关于kotlin - 当其他成员可以访问时,为什么不能访问 Kotlin 伴生对象内的对象 "statically"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46561324/