我是Scala的新手。我正在尝试编写一个抽象类,该类的方法将需要在子类上实现。我想使用泛型来强制该方法采用当前类的参数。
abstract class MySuper{
def doSomething:(MyInput[thisclass]=>MyResult)
}
class MySub extends MySuper{
override def doSomething:(MyInput[MySub]=>MyResult)
}
我知道上面的
thisclass
是无效的,但是我认为它表达了我想说的话。基本上,我想引用实现类。 解决此问题的有效方法是什么? 最佳答案
您可以使用一个巧妙的小技巧来做到这一点:
trait MySuper[A <: MySuper[A]]{
def doSomething(that: A)
}
class Limited extends MySuper[Limited]{
def doSomething(that: Limited)
}
还有其他方法,但我发现这种方法可以很好地表达您的需求。