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

Rya*_*edy 5 generics scala

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

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

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

whe*_*ies 4

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

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

class Limited extends MySuper[Limited]{
  def doSomething(that: Limited)
}
Run Code Online (Sandbox Code Playgroud)

还有其他方法,但我发现这个方法可以很好地表达您想要的内容。