如何从kotlin中的伴随对象调用父方法
我有一个超级class:
open class A { fun doStuff() { } }
然后我有一个子类扩展:
class B: A() { companion object { doStuff() //compile error } }
我怎样才能从同伴对象调用我的doStuff()方法?
你不能。
伴随对象与Java中的static关键字大致等价。 类A
(及其子类)的doStuff()
函数只能从该类的实际对象(如A().doStuff()
或B().doStuff()
)调用B().doStuff()
当试图从B
的伴侣对象中调用该函数时,由于您处于静态上下文中,因此不存在您可以调用该函数的A
(或B
)的此类对象。
如果你写了你发布的Java的等价物,你会收到错误
非静态方法不能从静态上下文中引用
这比你可能从Kotlin的编译器得到的更具描述性,在这里很好的解释。