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

给定一个Kotlin伴侣对象

class A { companion object { val a = 0 fun b() = 1 object C { val d = 0 } } } fun main(args: Array<String>) { println(Aa) println(Ab()) println(ACd) // doesn't compile println(A.Companion.Cd) } 

为什么当Companion不是ab()时需要访问AC

这样做的目的是从在类中直接声明的伴随对象中声明的对象中消除歧义。

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

 class A { object C { val d = 0 } } println(ACd)