Scala:通用特征可以从其实现类中获取其泛型类型实例吗?

时间:2014-05-30 18:27:02

标签: scala generics traits

假设我有以下特征:

trait Foo[T] {
  def returnMyself: T
}

有没有办法告诉scala任何扩展Foo的类使用本身作为泛型参数?

基本上,我想要实现的是能够写

class Bar extends Foo {
  override def returnMyself: Bar = this
}

无需明确写入

class Bar extends Foo[Bar]

我希望我已经清楚了

1 个答案:

答案 0 :(得分:0)

你应该能够使用自我类型:

trait Foo { self =>
  def returnMyself: self.type
}

class Bar extends Foo {
  override def returnMyself = this
}