我的类继承自某个基类,并实现apply
方法,其签名与基类完全相同。我想从我的班级调用base的apply
方法。
当我尝试以下时:
class MyClass extends BaseClass {
def apply(k: String, v: String) = {
super.apply(k, v)
...
}
...
}
我遇到value apply is not a member of BaseClass...
编译错误。
我该如何从子类中调用base的apply方法?
另外,为什么可以在没有apply
关键字的情况下覆盖override
方法?
编辑:实际代码:
class OAuthParamsBuilder(helper: OAuthParamsHelper)
extends KeyValueHandler {
def apply(k: String, v: String): Unit = {
...
}
}
class OAuthInitSupportBuilder
extends OAuthParamsBuilder(StandardOAuthParamsHelper) {
/*override*/ def apply(k: String, v: String): Unit = {
super.apply(k, v)
...
}
...
}
编辑:我注意到KeyValueHandler是一个特征,这可能是个问题。
trait KeyValueHandler extends ((String, String) => Unit)
答案 0 :(得分:1)
您没有帮助我们帮助您,但我怀疑这是基类上apply
的真正定义:
def apply(kv: (String, String)) = ???
修改强>
您粘贴的代码是不够的,因为问题无法与之重现:
trait OAuthParamsHelper
trait KeyValueHandler
class OAuthParamsBuilder(helper: OAuthParamsHelper) extends KeyValueHandler {
def apply(k: String, v: String): Unit = ???
}
object StandardOAuthParamsHelper extends OAuthParamsHelper
class OAuthInitSupportBuilder extends OAuthParamsBuilder(StandardOAuthParamsHelper) {
override def apply(k: String, v: String): Unit = {
super.apply(k, v)
???
}
}