Scala泛型:require方法使用类的类型

时间:2014-01-17 15:49:30

标签: scala generics

我对Scala很新。我正在尝试编写一个抽象类,其方法将需要在子类上实现。我想使用泛型来强制该方法获取当前类的参数。

abstract class MySuper{
  def doSomething:(MyInput[thisclass]=>MyResult)
}
class MySub extends MySuper{
  override def doSomething:(MyInput[MySub]=>MyResult)
}

我知道上面的thisclass无效,但我认为它表达了我想说的话。基本上我想引用实现类。 有什么方法可以解决这个问题?

1 个答案:

答案 0 :(得分:4)

你可以用一个巧妙的小技巧来做到这一点:

trait MySuper[A <: MySuper[A]]{
  def doSomething(that: A)
}

class Limited extends MySuper[Limited]{
  def doSomething(that: Limited)
}

还有其他方法,但我发现这个方法能很好地表达你想要的东西。