0

我的类继承自某个基类,并实现与基类apply具有完全相同签名的方法。我想apply从我的班级中调用 base 的方法。当我尝试以下操作时:

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)
4

1 回答 1

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)
    ???
  }
}
于 2012-06-17T18:31:41.150 回答