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