如何调用 super 的扩展函数?
例如:
open class Parent {
open fun String.print() = println(this)
}
class Child : Parent() {
override fun String.print() {
print("child says ")
super.print() // syntax error on this
}
}
如何调用 super 的扩展函数?
例如:
open class Parent {
open fun String.print() = println(this)
}
class Child : Parent() {
override fun String.print() {
print("child says ")
super.print() // syntax error on this
}
}
即使print()
函数是在 内部定义的Parent
,它也属于String
,而不是Parent
。所以没有print
你可以调用的函数Parent
,这就是你想要做的super
。
我认为您在 Kotlin 中尝试执行的调用类型没有语法支持。
目前不可能,并且 kotlin 问题跟踪器中存在一个问题 - KT-11488
但是您可以使用以下解决方法:
open class Parent {
open fun String.print() = parentPrint()
// Declare separated parent print method
protected fun String.parentPrint() = println(this)
}
class Child : Parent() {
override fun String.print() {
print("child says ")
parentPrint() // <-- Call parent print here
}
}